2011-01-12 5 views
0

変数をメソッドを保持するjavascriptの機能と同様に、単に値を返すのではなく、PHPクラスの変数を参照するときに関数を実行できますか?インスタンス変数が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 
    } 

} 

答えて

2

PHP5sマジックメソッド__get($key)__set($key, $value)は何が必要かもしれません。それらの詳細についてはPHP manualをご覧ください。

+0

うーん...私たちのすべてがドイツ理解していないので、なぜ英語のマニュアルを共有しませんか? :-) – Rafid

+0

申し訳ありませんが、リンクを修正しました。 – mplappert

+0

これは私が探していたものではありませんが、実際に使用し終わったので、助けてくれました。ありがとう! – cjroth

1

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

+0

私はgetLazyVar()練習を使うのが良い習慣だと思うが、変数を欲しいと思ったのは、クラスのパターンを他の同様のパターン化されたクラスと一貫性を保つことにあるから、メソッドのプロパティは常に同じ方法。 – cjroth

関連する問題