PS
PS
<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>
Es ist ein falscher Weg, die Objektmethode direkt durch den Aufruf der statischen Methode der Klasse zu schreiben. Vor PHP5.5 versuchte es (anscheinend) sein Bestes, um die Anforderungen zu erfüllen, und meldete dann eine Warnung, aber nach 5.5 war es so ist ein Fehler.
Wenn Sie die Methode call_user_func
verwenden, verwenden Sie die Funktion in der Klasse, daher müssen Sie sie instanziieren. Nur wenn Sie sie direkt als Methode schreiben, können Sie sie wie folgt schreiben:
<code>function develop($val){ if($val){ echo 'Successful'; } else { echo 'Fail'; } } call_user_func('develop', true);</code>
Sie sollten es so schreiben, dass Sie eine statische Methode aufrufen.
Wenn Sie eine Instanzmethode aufrufen möchten
, müssen Sie die Klasse instanziieren
Strenger Modus, achten Sie auf die PHP-Version.