Heim >Backend-Entwicklung >PHP-Tutorial >call_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

call_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

WBOY
WBOYOriginal
2016-09-19 09:16:311099Durchsuche

PScall_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

call_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

Antwortinhalt:

PScall_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

call_user_func meldet eine Warnung, die auch auf der offiziellen PHP-Website aufgerufen wird. .

<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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn