0

変数がメソッドを保持するjavascriptの機能と同様に、単にその値を返すのではなく、phpクラスの変数を参照するときに関数を実行することは可能ですか?

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
    }

}
4

3 に答える 3

2

PHP5 の魔法のメソッド__get($key)であり、__set($key, $value)必要なものかもしれません。それらの詳細については、PHP マニュアルを参照してください。

于 2011-01-12T16:11:56.673 に答える
1

これは PHP5.3 のように聞こえます: ラムダ / クロージャー / 匿名関数

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

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

$greet('World');
$greet('PHP');
?>
于 2011-01-12T17:00:26.237 に答える
1

あなたはおそらく間違った方向に進んでいます。通常は getter を定義しますgetLazyVar()。人々が常にプロパティを保護し、ゲッター/セッターを定義するのには理由があります。値を前処理または後処理できるようにするためです。

于 2011-01-12T16:17:27.943 に答える