Métodos mágicos en PHP
Los siguientes son métodos mágicos:
Faltan otros pero, estos son los más utilizados. No se pueden tener métodos con los nombres anteriores en ninguna de las clases a no ser que desees hacer uso de estas funcionalidades. Empezamos definiendo cada una de éstas y a su vez les mostraré un pequeño ejemplo.
__construct(): Éste es el método mágico más utilizado en php porque este es llamado automáticamente cuando se crea el objeto, éste a su vez puede llevar parámetros.
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
public function __construct(){
echo "Hola, aún no te has identificado";
}
}
$cliente = new RetirarDineroDelCajero();
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
private $documento = [
'252423' => 'Maria',
'10075658' => 'Pepito Perez'
];
public function __construct($identificacion){
foreach ($this->documento as $key => $value) {
if ($identificacion == $key) {
echo "Bienvenida $value a tu cajero de retiro";
}
}
}
}
$cliente = new RetirarDineroDelCajero('252423');
__destruct(): Éste también se llama automáticamente pero, al finalizar el proceso del objeto creado. Se suele utilizar para destruir o eliminar referencia. Su uso más habitual es para cerrar una conexión a base de datos cada vez que haces una consulta. Éste no recibe parámetros aunque se podría pero, lo recomendable es no pasarle parámetros.
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
private $nameSession;
private $documento = [
'252423' => 'Maria',
'10075658' => 'Pepito Perez'
];
public function __construct($identificacion){
foreach ($this->documento as $key => $value) {
if ($identificacion == $key) {
$this->nameSession = $value;
$this->numeroDocumento = $key;
echo "Bienvenida $value a tu cajero de retiro <br><br>";
}
}
}
public function __destruct(){
echo "Destuyendo la sesión de $this->nameSession <br>";
echo "Sesión cerrada exitosamente";
}
}
$cliente = new RetirarDineroDelCajero('10075658');
__call(): Éste método es lanzado al llamar o invocar un método o función inaccesible o inexistente desde un contexto del objeto.
__callStatic(): Éste método es lanzado al llamar o invocar un método o función inaccesible o inexistente desde un contexto estático.
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
private $nameSession;
private $documento = [
'252423' => 'Maria',
'10075658' => 'Pepito Perez'
];
public function __construct($identificacion){
foreach ($this->documento as $key => $value) {
if ($identificacion == $key) {
$this->nameSession = $value;
$this->numeroDocumento = $key;
echo "Bienvenida $value a tu cajero de retiro <br><br>";
}
}
}
public function __call($metodo, $parametros){
$mensaje = "Método inaccesible: -> $metodo, Parámetros -> ";
foreach ($parametros as $parametro) {
$mensaje .= "$parametro ' ";
}
echo "$mensaje <br>";
}
public static function __callStatic($metodo, $parametros){
$mensaje = "Método inaccesible: -> $metodo, Parámetros -> ";
foreach ($parametros as $parametro) {
$mensaje .= "$parametro ' ";
}
echo "$mensaje <br>";
}
public function __destruct(){
echo "Destuyendo la sesión de $this->nameSession <br>";
echo "Sesión cerrada exitosamente";
}
}
$cliente = new RetirarDineroDelCajero('10075658');
$cliente->tarjetaDeCredito(544455, "46544-5436-5484-558");
echo "<br><br>";
$cliente::tarjetaDeCredito(544455, "46544-5436-5484-558");
__set(): Método utilizado para asignar un valor a una propiedad no visible, también se puede crear nuevas propiedades de una clase.
__get(): Método utilizado para consultar datos a partir de propiedad no visible.
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
private $documento = [
'252423' => 'Maria',
'10075658' => 'Pepito Perez'
];
public function __construct($identificacion){
foreach ($this->documento as $key => $value) {
if ($identificacion == $key) {
$this->nameSession = $value;
$this->numeroDocumento = $key;
echo "Bienvenida $value a tu cajero de retiro <br><br>";
}
}
}
public function __destruct(){
echo "Destuyendo la sesión de $this->nameSession <br>";
echo "Sesión cerrada exitosamente";
}
public function __call($metodo, $parametros){
$mensaje = "Método inaccesible: -> $metodo, Parámetros -> ";
foreach ($parametros as $parametro) {
$mensaje .= "$parametro ' ";
}
echo "$mensaje <br>";
}
public function __set($propiedad, $valor){
return $this->$propiedad = $valor;
}
public function __get($propiedad){
if (property_exists($this, $propiedad)) {
return $this->$propiedad;
}
}
}
$cliente = new RetirarDineroDelCajero('10075658');
$cliente->tarjetaDeCredito(544455, "46544-5436-5484-558");
echo "<br><br>";
$cliente->numeroDocumento = 2547896;
echo "Acabas de ingresar con el documento No.$cliente->numeroDocumento <br>";
$cliente->nameSession = "Anónimo";
echo "<br><br>";
echo "Nombre del usuario: $cliente->nameSession";
echo "<br><br>";
__isset(): Método utilizado para verificar la existencia de un array o propiedad, se lanza al llamar a isset() o a empty() sobre propiedades inaccesibles.
__unset(): Elimina un array o propiedad de la clase, este se invoca cuando se usa unset() sobre propiedades inaccesibles.
class RetirarDineroDelCajero {
private $cajero = "8523 Guapi";
private $numeroDocumento;
private $nameSession;
private $documento = [
'252423' => 'Maria',
'10075658' => 'Pepito Perez'
];
public function __construct($identificacion){
foreach ($this->documento as $key => $value) {
if ($identificacion == $key) {
$this->nameSession = $value;
$this->numeroDocumento = $key;
echo "Bienvenida $value a tu cajero de retiro <br><br>";
}
}
}
public function __destruct(){
echo "Destuyendo la sesión de $this->nameSession <br>";
echo "Sesión cerrada exitosamente";
}
public function __call($metodo, $parametros){
$mensaje = "Método inaccesible: -> $metodo, Parámetros -> ";
foreach ($parametros as $parametro) {
$mensaje .= "$parametro ' ";
}
echo "$mensaje <br>";
}
public function __set($propiedad, $valor){
return $this->$propiedad = $valor;
}
public function __get($propiedad){
if (property_exists($this, $propiedad)) {
return $this->$propiedad;
}
}
public function __isset($propiedad){
return isset($this->$propiedad);
}
public function __unset($propiedad){
unset($this->$propiedad);
}
}
$cliente = new RetirarDineroDelCajero('10075658');
echo "<br><br>";
$cliente->numeroDocumento = 2547896;
echo "La propiedad numeroDocumento existe: ". isset($cliente->numeroDocumento)."<br>";
unset($cliente->numeroDocumento);
echo "Comprobando si numeroDocumento existe: ".var_dump($cliente);
echo "<br><br>";
muy bien elaborado
Using the one of the best simple way to find screen shot in mac mac os x i hope you try to understand this process.