Я пытаюсь достичь следующей цели:
Использование этого общего синглтон-класса:
abstract class Singleton {
private static $instance = null;
public static function self()
{
if(self::$instance == null)
{
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
}
Я бы хотел создать конкретный класс Singleton, такой как:
class Registry extends Singleton {
private function __construct() {}
...
}
и затем используйте их как:
Registry::self()->myAwesomePonyRelatedMethod();
Но, очевидно, __CLASS__
задан как Singleton
, поэтому возникает фатальная ошибка, связанная с тем, что PHP не может создать экземпляр абстрактного класса. Но правда в том, что я хочу, чтобы реестр (например) был создан.
Итак, я попробовал с get_class($this)
, но, будучи статическим классом, у Singleton нет $ this.
Что я мог сделать, чтобы это работало?