Saltar al contenido

Métodos mágicos PHP __get y __set

Solución:

__get, __set, __call y __callStatic se invocan cuando el método o la propiedad son inaccesibles. Tu $bar es público y por lo tanto no inaccesible.

Consulte la sección sobre sobrecarga de propiedades en el manual:

  • __set() se ejecuta al escribir datos en propiedades inaccesibles.
  • __get() se utiliza para leer datos de propiedades inaccesibles.

Los métodos mágicos no sustituyen a los getters y setters. Solo le permiten manejar llamadas a métodos o acceso a propiedades que de otra manera resultarían en un error. Como tal, hay mucho más relacionado con el manejo de errores. También tenga en cuenta que son considerablemente más lentos que usar getter y setter adecuados o llamadas de método directo.

Recomendaría usar una matriz para almacenar todos los valores a través de __set().

class foo {

    protected $values = array();

    public function __get( $key )
    {
        return $this->values[ $key ];
    }

    public function __set( $key, $value )
    {
        $this->values[ $key ] = $value;
    }

}

De esta manera, se asegura de que no pueda acceder a las variables de otra manera (tenga en cuenta que $values está protegido), para evitar colisiones.

Del manual de PHP:

  • __set () se ejecuta al escribir datos en propiedades inaccesibles.
  • __get () se utiliza para leer datos de propiedades inaccesibles.

Esto solo se llama en lectura / escritura. inaccesible propiedades. Sin embargo, su propiedad es pública, lo que significa que es accesible. Cambiar el modificador de acceso a protegido resuelve el problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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