php – call_user_func() 報錯說要使用靜態的解決方法
如果直接使用如 call_user_func(array(‘User’, ‘name’), “李小姐”); 這種方法,會出現錯誤提示如 Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method…。這代表,呼叫的方法沒有指定 static (靜態)。
解決方法就是改 function 為 static,不然就是改成如 call_user_func(array(new User’, ‘name’), “李小姐”); 。下面舉例說明
<? class User { public function name($string) { echo $string; } public function age($age) { echo $age; } public function tel($code, $tel) { echo "({$code}){$tel}"; } static public function address($address) { echo $address; } } call_user_func(array('User', 'name'), "李小姐"); // 報錯 Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method User::name() should not be called statically in C:\xampp\htdocs\www\CI_jsn\test.php on line 20 call_user_func(array(new User, 'age'), "18"); // 實體化為物件以後,輸出 18 call_user_func(array(new User, 'tel'), "07", "336-1111"); // 添加多筆參數,輸出 (07)336-1111 call_user_func(array('User', 'address'), "高雄市"); // 指定為靜態方法,才可正常出 高雄市
參考PHP官方解釋