Я пытаюсь реализовать одноэлементный шаблон с возможностью передачи аргументов инструктору.Для одноэлементного шаблона я хочу создать базовый класс.Основная проблема заключается в том, что не все производные классы имеют одинаковое количество параметров.Для базового класса синглтона у меня пока есть это:
abstract class Singleton
{
/**
* Function: __construct
* Description: the function which creates the object.
*/
protected function __construct()
{
}
private final function __clone()
{
}
public static function getInstance()
{
$args = func_get_args();
static $instance = null;
return $instance = $instance ? : new static();
}
}
Пока это работает, но я не могу передать аргументы конструктору с этим.Конечно, я могу напрямую передать массив $ args в конструктор, но я не хочу раскрывать массив в каждом конструкторе производных классов, я хочу иметь возможность передавать аргументы как обычные параметры.
Я уже пробовал несколько вещей: я пытался использовать call_user_func_array, но я не мог понять, как создать объект с помощью этой функции (если это вообще возможно), и я также попытался использовать ReflectionClass.Проблема с ReflectionClass заключалась в том, что этот класс не может получить доступ к конструктору, поскольку конструктор защищен.
Так у кого-нибудь есть какие-нибудь идеи для меня, как решить эту проблему?
пс.извините, если я веду себя сложно, но я просто пытаюсь найти лучшее решение (и понимаю это решение).