Хотел поинтересоваться, на много ли такая реализация синглтона будет медленнее стандартной?
Стандартная реализация класса-одиночки (например логгера):
<?php
class Log
{
private static $instance = null;
private function __construct(){}
private function __clone(){}
public static function instance()
{
if(self::$instance == null)
{
self::$instance = new self;
}
return self::$instance;
}
public function write()
{
}
}
?>
Я предположил, что копипаст части кода во все классы-одиночки нецелесообрзен, поэтому попробовал сделать так:
1. У нас есть класс, оперирующий классами-одиночками.
2. У нас есть сами классы.
Класс-оператор:
<?php
class Single
{
private static $instance = array();
private function __construct(){}
private function __clone(){}
public static function instance($type)
{
if(empty(self::$instance[$type]))
{
self::$instance[$type] = new $type;
}
return self::$instance[$type];
}
}
?>
И например класс логгера:
class Log
{
public function write()
{
}
}
Вызов происходит через Single::instance('Log')->write();
вместо стандартного Log::instance()->write();
Спасибо за внимание :)