Я пытаюсь реализовать шаблон синглтона в php, как описано здесь в Примере №2: http://www.php.net/singleton
Когда я запускаю пример кода
$singleton = Example::singleton(); // prints "Creating new instance."
echo $singleton->increment(); // 0
echo $singleton->increment(); // 1
$singleton = Example::singleton(); // reuses existing instance now
echo $singleton->increment(); // 2
echo $singleton->increment(); // 3
, он всегда заканчивается FatalОшибка «Клонирование не допускается».непосредственно после «Создание нового экземпляра».
Я ожидаю, что у php нет причин для вызова метода __clone.В другом моем реальном жизненном проекте я хочу иметь одноэлементный PlayerManager, который содержит объекты Player в массиве (загружается только один раз в __construct) и имеет функции, такие как GetPlayers () или GetPlayersByID ($ id).
В моем сценарии я пишу что-то вроде
$pm = PlayerManager::GetInstance();
$p1 = $pm->GetPlayerByID(0);
echo $p1->SomeNumber; //100
$p1->SomeNumber = 200;
$p2 = $pm->GetPlayerByID(0);
echo $p2->SomeNumber; //100 and not 200, as I would expect
Может кто-нибудь дать мне несколько советов, как правильно реализовать PlayerManager с использованием шаблона Singleton?Я не уверен, что это только проблема с синглтоном или проблема с возвратом ссылок на объекты ...