2011-01-12 35 views
0

有沒有可能在php類中引用變量時運行函數,而不是簡單地返回它的值,類似於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 
    } 

} 

回答

2

PHP5s魔術方法__get($key)__set($key, $value)可能是你所需要的。有關它們的更多信息,請參見PHP manual

+0

嗯......我們並非人人懂德語,那麼爲什麼不分享英文說明書? :-) – Rafid 2011-01-12 16:16:11

+0

對不起,修正了鏈接。 – mplappert 2011-01-12 16:19:20

1

您可能正朝着錯誤的方向前進。您通常要定義一個吸氣劑getLazyVar()。爲什麼人們總是對屬性進行保護並定義getter/setter:這是有原因的:所以他們可以對這些值進行預處理或後處理。

相關問題