2012-01-05 4 views
0

내 라이브러리 중 하나에서 전역 컨텍스트 변수를 만들려고하지만 변수를 만드는 방법을 알아낼 수 없습니다. 이 반향을 끝컨텍스트 변수 PHP

class test{ 
    function tester(){ 
     echo context::getContext(); 
     echo '<br />'; 
     context::setContext(2); 
     echo context::getContext(); 
     echo '<br />'; 
     new test2(); 
    } 
} 
class test2{ 
    public function __construct(){ 
     echo context::getContext(); 
    } 
} 
class context{ 
    protected static $contextNum = 0; 
    public function getContext(){ 
     return isset($this->contextNum) ? $this->contextNum : 0; 
    } 
    public function setContext($num){ 
     $this->contextNum = $num; 
    } 
} 

:

이 가
0 
2 
0 

가 어떻게 그것을 밖으로 에코는 수 있도록 할 수 있습니다 다음은 내 코드의 샘플입니다?

0 
2 
2 

답변

0

변경

$this->contextNum = $num; 
// and 
return isset($this->contextNum) ? $this->contextNum : 0; 

self::$contextNum = $num; 
// and 
return isset(self::$contextNum) ? self::$contextNum : 0; 

를 사용하여 정적 메소드 setContext()에 대한 수정 및 getContext()

또한 당신이 context__construct() 방법에 throw new Exception('Can\'t create instance of this class')을 추가 권합니다.

+0

사실 컨텍스트 클래스에 대한 구조가 있습니다.이 예제에서는 관련이 없으므로 포함하지 않았습니다. 상황 별 수업의 인스턴스화를 허용하지 않는 이유가 있을까요? –

+0

아, 당신이 원하는 모든 정적 ... 다음 메서드에 대한 고정 정적 한정자에 대한 조언을 무시하고, 건설에 대해 ... – devdRew

+0

이 경우에는 메서드 자체 정적 정적입니까? –

0

이 시도 :

class context(){ 
    protected static $contextNum = 0; 
    public function getContext(){ 
     return isset(self::$contextNum) ? self::$contextNum : 0; 
    } 
    public function setContext($num){ 
     self::$contextNum = $num; 
    } 
} 

$this->contextNum는 인스턴스 변수 (클래스 context 인스턴스에 존재, 즉 하나) contextNum 액세스하는 데 사용되는, self::$contextNum 정적 변수로 액세스하는 데 사용된다.