Вам необходимо всегда возвращать объект singleton из метода singleton, в данном случае это не так, потому что у вас есть оператор else
, поэтому первый вызов getInstance
ничего не даст:
static function getInstance()
{
if(!self::$instance) {
self::$instance = new Core();
} else {
return self::$instance;
}
}
Ваш одноэлементный метод должен выглядеть следующим образом:
static function getInstance()
{
if(!self::$instance) {
self::$instance = new Core();
}
return self::$instance;
}
Кроме того, наличие переменной экземпляра, обозначающей, был ли создан объект, в значительной степени бесполезно, поскольку вы можете просто сравнить if(self::$instance !== NULL)
и все готово.