0

Tutorial métodos mágicos php

Este tutorial explico un poco el conocimiento adquirido de lo investigado sobre los métodos mágicos se iniciará por el método __get()

__get()
Usualmente al crear una clase se establecen las propiedades a sus atributos y estos quedan definidos en protected o private, para que así de esta manera no se pueda acceder el método __get() permite accederlos de la siguiente manera

 //Se crea la clase 
    
    class Prueba 
    { 
    
            //se define la variable con el atributo private en este caso es un array 
            private $datos =array('uno'=>'Información1', 'dos'=>'Información2','tres'=>'Informacion3');
            
            //Se establece la función con el método mágico __get()
            public function __get($indice)
            {
                    if (isset ($this->datos[$indice]))
                    {
                            return $this->datos[$indice];
                    }
                    else
                    {
                            return 'No existe informacion';
                    }
            }
    
    
    }

A través de esto se trata acceder con el índice del array a la información que se ha definido en el mismo
Se crea el objeto de la clase

 $ob= new Prueba();
    
    echo $ob->uno;
    echo $ob->dos;
    echo $ob->tres;
    echo $ob->cuatro;

Al índice cuatro no podrá acceder ya que no está definido en el array y el resultado será el siguiente:

__set()
Se ejecuta de la misma manera que __get() , pero en este método se envían dos valores, el atributo y el valor que se le desea asignar a ese valor que está privado usando este método mágico

  // Se establece la clase 
    class Prueba 
    {
    
    //Se definen los atributos 
     private $nombre;
     private $apellidos;
     private $edad;
    
     public function __get($atributo)
     {
         return $this->$atributo;
    
     }
    
     public function __set($atributo,$valor)
     {
        $this->$atributo=$valor;
     }

}

Posterior a eso procedemos a asignar valores a esos atributos que están con la propiedad de privado de la siguiente manera declarando un objeto de esa clase.

 $ob2= new Prueba();
    
    $ob2->nombre= 'Eduardo ';
    $ob2->apellido = 'Otra Información';
    $ob2->edad = '33';
    var_dump($ob2);

Mostramos con var_dump para ver la propiedad de cada uno de los atributos lo que nos mostrará lo siguiente

Donde se puede observar que la propiedad sigue siendo privada asigándoles un valor con el método mágico _set()

De esta manera se puede decir que al acceder a los atributos privados va en contra de la propiedad de la encapsulación para el uso de objetos, más sin embargo esto puede ser un uso primordial para hacer operaciones de seguridad, al acceder a estos atributos ya mencionados

http://www.nazariglez.com/2013/02/12/tutorial-php-metodos-magicos-set-get/

http://php.net/manual/es/language.oop5.magic.php

Escribe tu comentario
+ 2