我想將數組分解爲單獨的參數並將其傳遞給類的構造函數。 call_user_func_array()如何做到這一點?使用可變數量的參數實例化一個對象
我見過使用Reflection類的方法,但是想知道是否有更直接的方法。
感謝
我想將數組分解爲單獨的參數並將其傳遞給類的構造函數。 call_user_func_array()如何做到這一點?使用可變數量的參數實例化一個對象
我見過使用Reflection類的方法,但是想知道是否有更直接的方法。
感謝
的ReflectionClass
是要做到這一點,最直接的方式做到這一點的最好辦法,但有是另一種方式:
function call_new_array($klass, $args)
{
$vars = array();
$loads = array();
foreach($args as $i => $x) {
$vars[] = '$v' . $i;
$loads[] = '$v' . $i . ' = $args[' . $i . ']';
}
return eval(implode(";",$loads) .
";return new $klass(" . implode(",", $vars) . ");");
}
call_user_func_array(),因爲(作爲命名建議),它調用函數/方法,但不打算創建對象,使用ReflectionClass
$refClass = new ReflectionClass($class);
$object = $refClass->newInstanceArgs($args);
另一個(更多d基於ESIGN - )解決方案是一個靜態的工廠方法
class Demo() {
public static function set_args ($args) {
return new self($args[0],$args[1],$args[2]);
}
}
,然後就
$object = $class::set_args($args);
它的清潔劑,因爲較少的魔術和更多的控制