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

아마도 잘못된 방향으로 가고 있습니다. 일반적으로 getter getLazyVar()을 정의하려고합니다. 사람들이 항상 속성을 보호하고 정의 된 getter/setter로 만드는 이유가 있습니다. 따라서 값을 사전 또는 사후 처리 할 수 ​​있습니다.

+0

나는 getLazyVar() 연습을 사용하는 것이 좋은 습관에 동의하지만 변수를 원한 이유는 비슷한 패턴의 클래스와 일관되게 클래스의 패턴을 유지하는 것이다. 그래서 메소드의 속성은 항상 똑같은 방법으로 액세스 할 수있다. . – cjroth

관련 문제