Exécuter une méthode quand une variable d'instance est référencée dans une classe PHP?

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

Question

Est-il possible d'exécuter une fonction en référence à une variable dans une classe php plutôt que de simplement retourner sa valeur, semblable à la capacité de javascript pour une variable pour tenir une méthode?

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
    }

}
Était-ce utile?

La solution

Cela sonne comme PHP5.3: lambda / fermetures / fonctions anonymes

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

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

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

Autres conseils

PHP5s méthode magique __get($key) et __set($key, $value) peut-être ce dont vous avez besoin. Pour plus d'informations à leur sujet est disponible dans le manuel PHP .

Vous dirige probablement dans la mauvaise direction. Vous voulez normalement définir un getLazyVar() getter. Il y a une raison pour laquelle les gens font toujours des propriétés protégées et getters / setters définis. Ils peuvent ainsi pré ou post-traitement des valeurs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top