![]() |
Metodo definido function __get (). Como funciona ? Estaba leyendo sobre constantes de clases, algo buenisimo por cierto a partir de PHP5; y en el manual oficial de PHP hay un comentario sobre como poder acceder al valor de una constante de clase, ya que lasa mismas están encapsuladas por lo que no podemos hacer referencia directamente. Encontré este ejemplo. Código PHP: |
Re: Metodo definido function __get (). Como funciona ? jejej tanto para hacer esto: Código PHP: |
Re: Metodo definido function __get (). Como funciona ? Cuando "desde afuera" quieres acceder a una propiedad que no existe o que no es visible( privada, por ejemplo), si tenes definido el metodo "mágico" __get, este recibe un parámetro (en tu ejemplo "$name") que contiene el nombre de la propiedad que intentaste recuperar. Una vez que sabes dicho valor podés lanzar un mensaje de error, averiguar su valor y retornarlo (como en tu ejemplo), llamar a un metodo, etc. Saludos |
Re: Metodo definido function __get (). Como funciona ? Gracias Fridureiks. Esto es propio de PHP, no es cierto ?. Poco tiene que ver con POO. pregunto ... |
Re: Metodo definido function __get (). Como funciona ? Asi es son metodos magicos, leelos en el manual, son __get, __set, __unset, __isset, __sleep, __wakeup, __call. |
Re: Metodo definido function __get (). Como funciona ? Me he encontrado con este problema pero con una vuelta de tuerca más. En mi caso, tengo una clase base donde añado el método mágico __get tal y como se ha descrito más arriba. Lo hago así, porque quiero dar esta funcionalidad a todas las clases 'hijo'. (Poner la misma función en todas las clases hijos me parece muy ineficiente) El problema viene del self:: que accede a la clase base y no a la clase hijo que es de donde se le llama. ¿Alguna idea o ayuda? |
Re: Metodo definido function __get (). Como funciona ? El problema es que self, siempre se refiere a la misma clase, puedes a lo mejor guardar en la clase padre un apuntador al padre usando la constante __CLASS__. Saludos. |
| La zona horaria es GMT -6. Ahora son las 22:55. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.