我知道call_user_func_array的存在,但我不相信你可以用它來構造一個類(如果可以的話,你是如何做的?)。只要我沒有弄錯,你如何實例化一個數組作爲參數的類?以數組爲參數實例化一個類
例如:
class Test {
public function __construct($var1, $var2) {
// do something
}
}
我將如何與這個實例吧: 陣列( 「var1_data」, 「var2_data」)
我知道call_user_func_array的存在,但我不相信你可以用它來構造一個類(如果可以的話,你是如何做的?)。只要我沒有弄錯,你如何實例化一個數組作爲參數的類?以數組爲參數實例化一個類
例如:
class Test {
public function __construct($var1, $var2) {
// do something
}
}
我將如何與這個實例吧: 陣列( 「var1_data」, 「var2_data」)
如果您必須具有多個構造函數,則應將它們命名爲__construct
以外的其他名稱,然後定義一個可接受任意數量參數的__construct
方法。在該方法中,您可以確定要使用哪個自定義構造函數。如果你想要做的是讓構造函數傳遞一個數組,而不是一個參數列表,你可以做到這樣(注意這個例子沒有任何錯誤檢查):
public function __construct() {
$args = func_get_args();
if(count($args) == 1 && is_array($args[0])) {
$cArgs = $args[0];
} else {
$cArgs = $args;
}
__do_construct($cArgs[0], $cArgs[1]);
}
private function __do_construct($arg1, $arg2) {
// do something
}
所以我假設在班級之外沒有辦法做到這一點? – qrokodial
當然,我只是假設你正在努力在課堂上做到這一點。你可以用反射來做。參見[http://stackoverflow.com/questions/1569949/instantiating-a-new-php-class-with-one-or-many-arguments](http://stackoverflow.com/questions/1569949/instantiating-a - 新的PHP類與 - 一或一對多的論點)。 –
你想構建具有未知數量的參數的對象或單個參數是一個數組? –