【发布时间】:2011-02-04 17:03:14
【问题描述】:
我尝试实现一个能够将参数传递给讲师的单例模式。对于单例模式,我想创建一个基类。这样做的主要问题是并非所有派生类都具有相同数量的参数。对于单例基类,到目前为止我有这个:
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 的问题是这个类不能访问构造函数,因为构造函数是受保护的。
那么有人对我有什么想法可以解决这个问题吗?
ps。对不起,如果我表现得很困难,但我只是试图找到最好的解决方案(并理解那个解决方案)。
【问题讨论】: