hp
hp
<code class="php">class Father { public function __construct() { echo "father<br>"; } } class Child extends Father { public function say() { echo "hello"; } static function say2() { echo "hello2"; } } // 调用对象方法需要先实例化对象 $child = new Child; call_user_func([$child, 'say']); // 可以直接调用类静态方法 call_user_func(['child', 'say2']);</code>
直接用呼叫類別靜態方法的方式掉物件方法是一種錯誤的寫法,在 PHP5.5(好像是) 之前是會盡量滿足然後報 warning,但是在 5.5 之後就是一個錯誤。
你用call_user_func
方法時,掉用的是類別裡面的函數,所以需要實例化一下,你要是直接寫成方法才可以像你那麼寫,例如:
<code>function develop($val){ if($val){ echo 'Successful'; } else { echo 'Fail'; } } call_user_func('develop', true);</code>
你這樣的寫法應該是呼叫靜態的方法
如果想呼叫實例方法
你就要實例化類別
嚴格模式,注意php版本。