Как насчет синглтон - PullRequest
       9

Как насчет синглтон

2 голосов
/ 31 октября 2011

Я искал информацию о синглтоне, я нашел: http://www.php.net/manual/en/language.oop5.patterns.php#95196

Я не понимаю:

final static public function getInstance()
{
    static $instance = null;

    return $instance ?: $instance = new static;
}

Если он установил $ instance в null, почему этот тип возврата? Почему бы не создать $ instance в глобальном «пространстве» класса, не установив для него значение null в getInstance?

Ответы [ 3 ]

6 голосов
/ 31 октября 2011

Нельзя инициировать переменные класса с нестатическими значениями, поэтому

class X {
    $instance = new SomeObj();
}

не допускается.

Код, который вы опубликовали, является одним из способов убедиться, что определен только ОДИН экземпляр этого класса.

static $instance = null;

создаст переменную и установит ее на null при первом вызове метода. После этого sicne объявлен static, PHP проигнорирует эту строку.

Тогда другой код можно увидеть следующим образом:

if (isnull($instance)) {
    ... first time through this method, so instantiate the object
    $instance = new someobj;
}
return $instance;
0 голосов
/ 31 октября 2011

В этом конкретном примере $instance предшествует ключевое слово static внутри вызова функции.Это означает, что переменная сохраняет свое состояние (значение) между вызовами функции.Обнуление произойдет только один раз, при первоначальном вызове функции.
кстати, это способ C синглетонов ...

0 голосов
/ 31 октября 2011

Найдите следующие ссылки, полезные для понимания одноэлементных шаблонов.

Википедия

PHP Patterns

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