PHP Не разрешать объекту создавать экземпляр более одного раза

У меня есть абстрактный класс, который унаследован рядом других классов. Я хотел бы иметь его так, чтобы вместо повторного создания экземпляра (__construct ()) одного и того же класса каждый раз, чтобы он только инициализировался один раз и использовал свойства ранее унаследованных классов.

Я использую это в моей конструкции:

function __construct() { self::$_instance =& $this; if (!empty(self::$_instance)) { foreach (self::$_instance as $key => $class) { $this->$key = $class; } } } 

Это работает – вроде, я могу получить свойства и повторно назначить их, но в этом я также хочу назвать некоторые другие классы, но только один раз.

Любые предложения для лучшего способа сделать это?

Это синглтонская конструкция:

 class MyClass { private static $instance = null; private final function __construct() { // } private final function __clone() { } public final function __sleep() { throw new Exception('Serializing of Singletons is not allowed'); } public static function getInstance() { if (self::$instance === null) self::$instance = new self(); return self::$instance; } } 

Я сделал конструктор и __clone() private final чтобы помешать людям клонировать и напрямую инициировать его. Вы можете получить экземпляр Singleton с помощью MyClass::getInstance()

Если вы хотите, чтобы абстрактный класс base-singleton рассмотрел это: https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/SingletonFactory.class.php

Вы имеете в виду шаблон Singleton:

 class Foo { private static $instance; private function __construct() { } public static function getInstance() { if (!isset(static::$instance)) { static::$instance = new static(); } return static::$instance; } }