Нельзя инициировать переменные класса с нестатическими значениями, поэтому
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;