我正在通過call_user_func_array
調用一個對象方法,我根據幾個參數傳遞動態字符串參數。確定call_user_func_array的參數
目前,它類似於此:
<?php
class MyObject
{
public function do_Procedure ($arg1 = "", $arg2 = "")
{ /* do whatever */ }
public function do_Something_Else (AnotherObject $arg1 = null)
{ /* This method requires the first parameter to
be an instance of AnotherObject and not String */ }
}
call_user_func_array(array($object, $method), $arguments);
?>
這適用於方法$method = 'do_Procedure'
但如果我想叫$method = 'do_Something_Else'
方法,需要的第一個參數是AnotherObject
一個實例,我得到一個E_RECOVERABLE_ERROR
錯誤。
我如何知道應該傳遞哪種類型的實例?例如。如果此方法需要一個對象實例,但第一個處理的參數是字符串,那麼我如何識別這個以便我可以傳遞null或者直接跳過該調用?
聽起來你是在太動態的函數調用。你不知道你在打什麼電話,而且你不知道你傳遞了什麼樣的論點......那怎麼辦? – deceze
那麼,我通過控制器對象路由請求,方法表示一個調用句柄。有些調用句柄方法可能需要POST或GET對象包裝器,因此應該只有正確的實例。如果字符串被傳遞,你會得到'試圖在一個none對象上調用xxx。 – Daniel
我只想在方法之前驗證參數,而不是手動在每個方法上進行參數驗證。 – Daniel