代码如下所示:
function make($class,$singleton,array $params=array())
{
switch(count($params))
{
case 0:
return $class::$singleton();
case 1:
return $class::$singleton($params[0]);
case 2:
return $class::$singleton($params[0],$params[1]);
case 3:
return $class::$singleton($params[0],$params[1],$params[2]);
case 4:
return $class::$singleton($params[0],$params[1],$params[2],$params[3]);
case 5:
return $class::$singleton($params[0],$params[1],$params[2],$params[3],$params[4]);
default:
//do something here...
}
}
示例:
class Test
{
private function __construct()
{
}
public static function getInstance($name)
{
return new Test;
}
}
$t=make('Test','getInstance',array('something value here'));
没关系,但是对于类有单例方法的变量大于5,默认切换中的代码是什么?有人可以帮帮我吗?
答案 0 :(得分:0)
您可以使用call_user_func_array
删除自己的开关function make($class, $singleton, array $params = array())
{
return call_user_func_array(array($class, $singleton), $params);
}
或者等待PHP5.6发布,你就能做到这一点:
return $class:$singleton(...$params);