2009-09-13 7 views
2

클래스 ConfigReader { private static $ instance = NULL; protected $ configData = array(); PHP 및 싱글 톤 다시

public function getInstance() 
    { 
     if(self::$instance == NULL) 
     { 
      self::$instance == new ConfigReader(); 
     } 
     return self::$instance; 
    } 

    public function getConfigValue($getName) 
    { 
     echo 'In function'; 
    } 

    private function __construct() 
    { 
     $this->configData = %READ_FROM_DATABASE%; 
    } 

    private function __clone() {} 
} 

그리고 대한

:

var_dump(ConfigReader::getInstance()) 

내가 가지고 :

NULL 나는 제발 도와주세요 ... 뇌에 의해 끊었다.

답변

5

, 당신은 단지 하나의 '='를 사용한다 : 당신이 대입을 만들고 싶어, 아닌 compatison :

self::$instance = new ConfigReader(); 

대신

self::$instance == new ConfigReader(); 


그리고 그

메서드를 으로 선언해야합니다.

public static function getInstance() 
{ 
    if(self::$instance == NULL) 
    { 
     self::$instance = new ConfigReader(); 
    } 
    return self::$instance; 
} 

Weth이 두 가지 수정은 작동합니다 ;-)

6

다만 오타 : self::$instance == new ConfigReader() 포함 == 대신 =

5

있어서의 getInstance()는 정적이어야한다.

메소드의 getInstance에서