Ejecutar un método cuando se hace referencia a una variable de instancia en una clase de PHP?

StackOverflow https://stackoverflow.com/questions/4670991

Pregunta

¿Es posible ejecutar una función cuando se hace referencia a una variable en una clase php en lugar de simplemente devolver su valor, similar a la capacidad de JavaScript para una variable para contener un método?

class LazyClassTest()
{

    protected $_lazyInitializedVar;

    public function __construct()
    {
        /* // How can this call and return runWhenReferrenced() when
           // someone refers to it outside of the class:
           $class = new LazyClass();
           $class->lazy;
           // Such that $class->lazy calls $this->runWhenReferrenced each
           // time it is referred to via $class->lazy?
         */
        $this->lazy = $this->runWhenReferrenced();
    }

    protected function runWhenReferrenced()
    {
        if (!$this->_lazyInitializedVar) {
            $this->_lazyInitializedVar = 'someValue';
        }

        return $this->_lazyInitializedVar
    }

}
¿Fue útil?

Solución

Esto suena como PHP5.3: lambda / cierres / funciones anónimas

http://php.net/manual/en/functions.anonymous.php :

<?php
$greet = function($name) {
    printf("Hello %s\r\n", $name);
};

$greet('World');
$greet('PHP');
?>

Otros consejos

PHP5s magia método __get($key) y __set($key, $value) podría ser lo que necesita. Más información acerca de ellos está disponible en el manual PHP .

Usted probablemente está yendo en la dirección equivocada. Normalmente se desea definir una getLazyVar() captador. Hay una razón por qué la gente siempre hacen propiedades protegidas y getters / setters definidos:. Para que puedan pre o post-procesamiento de los valores

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top