¿Qué son los métodos mágicos y cómo usarlos en PHP?

 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();
    
?>
Producción

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();
 
?>
Producción 

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");
 
?>
Producción

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;
 
?>
Producción

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;
 
?>
Producción 

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";
 
?>
Producción

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);
 
?>
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *