PHP и синглтоны снова - PullRequest
       31

PHP и синглтоны снова

2 голосов
/ 13 сентября 2009

класс ConfigReader { приватная статическая $ instance = NULL; защищенный $ configData = array ();

    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

Я разбил мозги ... Помогите мне, пожалуйста.

Ответы [ 3 ]

6 голосов
/ 13 сентября 2009

Просто опечатка: self::$instance == new ConfigReader() содержит == вместо =

5 голосов
/ 13 сентября 2009

В методе getInstance вы должны использовать только один '=': вы хотите сделать присваивание, а не сравнение:

self::$instance = new ConfigReader();

Вместо

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


И этот метод должен быть объявлен как static, так как вы используете его как статический метод:

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

С этими двумя модификациями должно работать; -)

5 голосов
/ 13 сентября 2009

Метод getInstance () также должен быть статическим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...