¿Cuáles son los métodos mágicos en PHP? y ¿Cómo implementarlos?



Este artículo le proporcionará un conocimiento detallado y completo de los diversos métodos mágicos en PHP con ejemplos.

En , las funciones especiales se pueden definir de tal manera que se pueden llamar automáticamente y no requieren ninguna llamada de función para ejecutar el código dentro de estas funciones. Esta función está disponible en un método especial conocido como métodos mágicos. En este artículo, discutiremos los principales métodos mágicos en PHP.

¿Qué son los métodos mágicos en PHP?

Los métodos que comienzan con 2 guiones bajos (__) generalmente se denominan métodos mágicos en PHP. Los nombres de estos métodos se limitan a una lista de PHP palabras clave admitidas que están reservadas. Por lo tanto, ninguna función debe definirse con el nombre de métodos mágicos de PHP.





Magic-Methods-in-PHP

Por lo general, estas funciones deben ser definidas por el usuario y no es necesario llamarlas explícitamente.



Lista de métodos mágicos en PHP

  • __construir()
  • __destruct ()
  • __call ($ diversión, $ arg)
  • __callStatic ($ diversión, $ arg)
  • __get ($ propiedad)
  • __set ($ propiedad, $ valor)
  • __isset ($ contenido)
  • __unset ($ contenido)
  • __dormir()
  • __despierta()
  • __Encadenar()
  • __invocar()
  • __set_state ($ matriz)
  • __clon()
  • __información de depuración()
  • __construir(): Es un método que se llama automáticamente después de la creación de un objeto. Aquí se puede definir cualquier número de argumentos que se pasarán cuando se creen los objetos.
class sample {function user_def () {echo 'constructor definido por el usuario'} function __construct () {echo 'constructor predefinido'}} $ obj = new sample ()?>

  • __destruct (): Destructor es una característica común del lenguaje orientado a objetos que se activa tan pronto como no hay otras referencias a un objeto en particular.
user_def () // comprobar que el objeto está destruido o no echo is_object ($ obj). ' '?>

orden de función c ++ matriz
  • __call ($ diversión, $ arg): Este método se llama cuando se llama a un método no definido o inaccesible. Lo que significa que se llama cuando se invoca un método indefinido o inaccesible en un objeto.
run ('teacher') // Si el método que no existe es llamado dentro del objeto, entonces el método __call () será llamado automáticamente. $ obj-> comer ('ashok', 'naranja') $ obj-> user_define ()?>



  • __callStatic ($ diversión, $ arg): Se llama a este método cuando se invoca un método indefinido o inaccesible de forma estática.
user_define ()?>

  • __get ($ propiedad): Este método se utiliza para obtener valores para propiedades de clase creadas dinámicamente por la sobrecarga de propiedades de PHP.
name = $ name $ this-> reg = $ reg} función pública __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Crea una instancia del objeto con la clase Student y asigna valores iniciales a las propiedades con el constructor. echo 'Nombre :'. $ obj-> nombre. '' // Cuando se accede a la propiedad privada, el método __get () se llamará automáticamente, por lo que podemos obtener el valor de la propiedad indirectamente. echo 'reg :'. $ obj-> reg. '' // El método __get () se llama automáticamente , y devuelve diferentes valores según el objeto en sí. ?>

  • __set ($ propiedad, $ valor): Este método se utiliza para poner valores para las propiedades de clase creadas dinámicamente por la sobrecarga de propiedades de PHP.
nombre = $ nombre $ this-> reg = $ reg} función pública __set ($ propiedad, $ valor) {if ($ propiedad == 'reg') $ valor $ propiedad = $ valor función pública fun () {echo 'Mi name es '. $ this-> name.', Mi número de registro es '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Tenga en cuenta que el código cambiará el valor inicial abajo. $ obj-> name = 'Sushma' // La propiedad 'name' se asignará correctamente. Si no hay un método __set (), entonces el programa lanzará una excepción. $ obj-> age = 16 // La propiedad 'reg' se asignará correctamente. $ obj-> reg = 160 // 160 es un valor no válido, por lo que no se puede asignar. $ obj-> fun ()?>

  • __isset ($ contenido); Este método se llamará al llamar a isset () o empty () para un miembro indefinido o inaccesible. Se invoca automáticamente mientras se comprueba si una propiedad sobrecargada requerida está configurada o no, utilizando la función isset () de PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __isset ($ content) {echo 'La propiedad {$ content} es privada, el método __isset () se llama automáticamente. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Asignado inicialmente. echo isset ($ obj-> género), '' echo isset ($ obj-> nombre), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ contenido): Este método se llamará al llamar a reset () para un miembro indefinido o inaccesible.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __unset ($ content) {echo 'Se llama automáticamente cuando usamos el método unset () fuera de la clase. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Asignado inicialmente. unset ($ obj-> género) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __dormir(): Este método se llama primero mientras se ejecuta serialize (). Devuelve la matriz de propiedades del objeto al limpiar objetos de clase PHP antes de la serialización.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __sleep () {echo 'Se llama cuando se llama al método serialize () fuera de la clase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Debe devolver un valor cuyos elementos son el nombre de las propiedades devueltas. }} $ obj = new Student ('Ashok') // Asignado inicialmente. echo serializar ($ obj) echo ''?>

  • __despierta(): Este método se llama mientras se ejecuta la deserialización (). Revertiría el trabajo para restaurar las propiedades y los recursos de los objetos al invocar la deserialización ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __sleep () {echo 'Se llama cuando se llama al método serialize () fuera de la clase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Debe devolver un valor cuyos elementos son el nombre de las propiedades devueltas. } función pública __wakeup () {echo 'Se llama cuando se llama al método unserialize () fuera de la clase. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Asignado inicialmente. var_dump (serializar ($ obj)) var_dump (unserializar (serializar ($ obj)))?>

  • __Encadenar(): Este método se llamará mientras se usa el método de eco para imprimir un objeto directamente. Se espera que devuelva un valor de cadena al usar instancias de clase con declaraciones de impresión PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Asignado inicialmente. echo $ obj?>

  • __invocar(): Este método se define en una clase que se llamará al intentar llamar a un objeto en una forma de llamar a la función.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __invoke () {echo 'Esto es un objeto'}} $ obj = new Student ('Ashok') // Asignado inicialmente . $ obj ()?>

  • __set_state ($ matriz): Este método se llama mientras se llama a var_export (). Es un método estático que se invoca al exportar una matriz de propiedades de objetos y espera dicha variable de matriz como argumento.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Asignado inicialmente. var_export ($ obj)?>

  • __clon(): Este método se llama cuando se copia el objeto.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} función pública __clone () {echo __METHOD __. 'estás clonando el objeto. '}} $ obj = new Student (' Ashok ') // Asignado inicialmente. $ obj2 = clon $ obj var_dump ('objeto1:') var_dump ($ obj) echo '' var_dump ('objeto2:') var_dump ($ obj2)?>

  • __información de depuración(): Este método es llamado por var_dump () mientras se descarga un objeto para obtener las propiedades que deberían mostrarse. Si el método no está definido en un objeto, se mostrarán todas las propiedades públicas, protegidas y privadas.
prop = $ val} función pública __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

Con esto, llegamos al final de este método mágico en el artículo de PHP. Espero que tengas una idea de los diversos métodos mágicos en PHP.

Revisar la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de ' Métodos mágicos en PHP ”Y me pondré en contacto contigo.