PHP-创建类的实例(数组参数)

时间:2018-07-07 11:05:39

标签: php reflection instance

目前,我正在创建一个这样的实例:

function newInstance($clazz, $parameters = []) {

    // Do other stuff before

    if(!is_array($parameters)) {
        $parameters = [$parameters];
    }

    // Do other stuff before

    return (new ReflectionClass($clazz))->newInstanceArgs($parameters)
}

问题是:

将数组用作单个参数,将其解释为参数数组,而不是单个参数。我还考虑过使用“ func_get_args”或添加第三个可选参数,该参数定义是否有一个数组作为参数或给定的数组包含所有参数,但是我不喜欢这样。

例如:

newInstance('clazzname', ['my', 'array']);

// should interpreted as:

function __construct($firstString, $secondString$) {}

// and sometimes as (depends on the class):

function __construct($myArray) {}

有人有主意吗?

1 个答案:

答案 0 :(得分:0)

我将使用variable-length arguments来处理此问题:

function newInstance($clazz, ...$parameters) {
    // Do other stuff before

    return (new ReflectionClass($clazz))->newInstanceArgs($parameters);
}

newInstance('clazzname', 'my', 'array');
// new clazzname('my', 'array');

newInstance('clazzname', ['my', 'array']);
// new clazzname(['my', 'array']);