我在一些mvc代碼中使用了__call魔術來生成自動裝載表單框架,但是我遇到了一個問題,我希望這裏的某個人可能有一個解決方法。__call magic在PHP中創建新類
__call魔法需要兩個參數:$ methodName和$ arguments。參數以您調用的一系列參數的形式返回。通常這個函數被調用的方法,你可以做這樣使這些參數送入一個功能:
call_user_func_array($methodName, $arguments);
,這將傳播完成與參數的方法簽名。我正在嘗試做一些更復雜的事情。我試圖以同樣的方式傳播類構造函數,通過能夠發送可能的內部逗號deliminenated參數到類的構造函數或僅直接發送參數,但這兩個都不會產生所需的結果。當我將內爆數組發送到構造函數中時,PHP認爲它是一個字符串,當我發送數組時,它認爲它是一個數組。
這是代碼我使用ATM:
public function __call($method, $args){
return $this->init_element(new $method($args['name'], $args['value'], $args['opts']));
}
如果我有4個參數,雖然傳遞下去?有沒有辦法讓我可以動態地填充構造函數,就像使用call_user_func_array()函數一樣?
我可以使用一個屬性()函數來做到這一點,但我真的很想能夠像我可以用函數來做到這一點。
由於提前,
的可能重複的[傳遞從數組參數中PHP來構造](http://stackoverflow.com/questions/3395914/pass-arguments-from-array-in- PHP的構造函數) - 使用反射。 – Gordon 2010-09-07 11:34:19
是的,這可能工作,我會試試看,看看它是否工作謝謝:) – Sammaye 2010-09-07 11:35:58