Поддерживает несколько объектов по 1 строке на класс:
Этот метод будет принудительно использовать синглтоны для любого класса, который вам нужен, все, что вам нужно сделать, это добавить 1 метод в класс, который вы хотите сделать синглтоном, и это сделает это за вас.
Здесь также хранятся объекты в классе «SingleTonBase», поэтому вы можете отлаживать все ваши объекты, которые вы использовали в вашей системе, путем повторения объектов SingleTonBase
.
Создайте файл с именем SingletonBase.php и включите его в корень вашего скрипта!
Код
abstract class SingletonBase
{
private static $storage = array();
public static function Singleton($class)
{
if(in_array($class,self::$storage))
{
return self::$storage[$class];
}
return self::$storage[$class] = new $class();
}
public static function storage()
{
return self::$storage;
}
}
Тогда для любого класса, который вы хотите создать синглтоном, просто добавьте этот небольшой метод.
public static function Singleton()
{
return SingletonBase::Singleton(get_class());
}
Вот небольшой пример:
include 'libraries/SingletonBase.resource.php';
class Database
{
//Add that singleton function.
public static function Singleton()
{
return SingletonBase::Singleton(get_class());
}
public function run()
{
echo 'running...';
}
}
$Database = Database::Singleton();
$Database->run();
И вы можете просто добавить эту одноэлементную функцию в любой класс, который у вас есть, и он будет создавать только 1 экземпляр на класс.
ПРИМЕЧАНИЕ: Вы всегда должны делать __construct приватным, чтобы исключить использование нового Class (); конкретизации.