Los métodos mágicos de PHP son métodos especiales que se llaman automáticamente cuando se cumplen ciertas condiciones. Hay varios métodos mágicos en PHP. Cada método mágico sigue ciertas reglas:
- Cada método mágico comienza con un doble guión bajo (__).
- Están predefinidos y no se pueden crear ni eliminar.
- Los métodos mágicos tienen nombres reservados y su nombre no debe usarse para otros fines.
- Los métodos mágicos se llaman automáticamente cuando se cumplen ciertos criterios.
Nombres de métodos | Tipos de devolución | Condición de llamar |
__construir() | Yaya |
Este método se llama automáticamente cada vez que se crea el objeto de una clase en particular. La función de este método mágico es la misma que la del constructor en cualquier lenguaje OOP. |
__destruir() | Yaya |
Como sugiere el nombre, este método se llama cuando el objeto se destruye y ya no se usa. Generalmente al final del programa y al final de la función. |
__call($nombre,$parámetro) | No es obligatorio | Este método se ejecuta cuando se llama a un método que aún no está definido. |
__Enstringr() | Cuerda |
Este método se llama cuando necesitamos convertir el objeto en una string. Por ejemplo: echo $obj; El $obj->__toString(); será llamado mágicamente. |
__get($nombre) | Yaya | Este método se llama cuando se utiliza una variable inaccesible o una variable inexistente. |
__set($nombre, $valor) | Yaya | Este método se llama cuando se escribe una variable inaccesible o una variable inexistente. |
__información de depuración() | formación | Este método mágico se ejecuta cuando se usa un objeto dentro de var_dump() con fines de depuración. |
Los siguientes son fragmentos de código y ejemplos para comprender mejor los métodos mágicos.
Método __construct(): En el siguiente ejemplo, la clase MagicMethod tiene un método mágico __construct() y se llama cada vez que se crea un nuevo objeto de la clase MagicMethod.
PHP
<?php class MagicMethod { function __construct() { echo "This is the construct magic method"; } } // Creating object of Magic method class $obj = new MagicMethod(); ?>
This is the construct magic method
Método __destruct(): En el siguiente ejemplo, la clase MagicMethod tiene un método mágico __destruct() que se llama automáticamente cuando el objeto de MagicMethod se destruye.
PHP
<?php class MagicMethod { function __destruct() { echo "This destruct magic method " + "gets called when object destroys"; } } $obj = new MagicMethod(); ?>
This destruct magic method gets called when object destroys
Método __call($nombre, $parámetros): este método se llama cuando se llama a un método o propiedad que no se ha definido.
Este método toma dos parámetros:
- $name: Contiene el nombre del método al que se llamó.
- $parámetros: esta es una array de parámetros que se le dieron a ese método.
PHP
<?php class MagicMethod { function __call($name , $parameters){ echo "Name of method =>" . $name."\n"; echo "Parameters provided\n"; print_r($parameters); } } // Instantiating MagicMethod $obj = new MagicMethod(); $obj->hello("Magic" , "Method"); ?>
Name of method =>hello Parameters provided Array ( [0] => Magic [1] => Method )
Método __toString(): este método se llama cuando un objeto se trata como una string. Este método también es útil para representar un objeto como una String.
PHP
<?php class MagicMethod { function __toString(){ return "You are using MagicMethod object as a String "; } } $obj = new MagicMethod(); echo $obj; ?>
You are using MagicMethod object as a String
Método __get($name): este método se llama cuando se usa una variable inaccesible (privada o protegida) o variables inexistentes.
PHP
<?php class MagicMethod { function __get($name){ echo "You are trying to get '" . $name . "' which is either inaccessible or non existing member"; } } $obj = new MagicMethod(); $obj->value; ?>
You are trying to get 'value' which is either inaccessible or non existing member
Método __set($nombre, $valor): Este método se llama cuando se intenta modificar o alterar una variable inaccesible o una variable inexistente.
PHP
<?php class MagicMethod { function __set($name , $value) { echo "You are trying to modify '" . $name . "' with '" . $value . "' which is either inaccessible or non-existing member"; } } $obj = new MagicMethod(); $obj->value = "Hello"; ?>
You are trying to modify 'value' with 'Hello' which is either inaccessible or non-existing member
Método __debugInfo(): este método se utiliza cuando se llama a la función var_dump() con el objeto como parámetro. Este método debería devolver una array que contenga todas las variables que pueden ser útiles en la depuración.
PHP
<?php class MagicMethod { function __debugInfo(){ return array("variable"=> "value"); } } $obj = new MagicMethod(); var_dump($obj); ?>
object(MagicMethod)#1 (1) { ["variable"]=> string(5) "value" }
Publicación traducida automáticamente
Artículo escrito por vishalkrsinghmsk y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA