Экземпляр как свойство статического класса

Можно ли объявить экземпляр класса как свойство в PHP?

В основном я хочу достичь:

abstract class ClassA() { static $property = new ClassB(); } 

Ну, я знаю, что я не могу этого сделать, но есть ли какое-нибудь обходное решение, всегда делающее что-то вроде этого:

 if (!isset(ClassA::$property)) ClassA::$property = new ClassB(); 

вы можете использовать одноэлементную реализацию:

 <?php class ClassA { private static $instance; public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new ClassB(); } return self::$instance; } } ?> 

то вы можете ссылаться на экземпляр с помощью:

 ClassA::getInstance()->someClassBMethod(); 

Альтернативное решение, статический конструктор, является чем-то вроде

 <?php abstract class ClassA { static $property; public static function init() { self::$property = new ClassB(); } } ClassA::init(); ?> 

Обратите внимание, что класс не должен быть абстрактным, чтобы это работало.

См. Также Как инициализировать статические переменные и https://stackoverflow.com/a/3313137/118153 .