创建函数make singleton class PHP

时间:2014-03-19 00:05:35

标签: php

代码如下所示:

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,默认切换中的代码是什么?有人可以帮帮我吗?

1 个答案:

答案 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);