Wenn eine Methode eine Rückrufmethode als Parameter akzeptieren muss, können wir so schreiben:
<?php function dosth($callback){ call_user_func($callback); } function callback(){ echo 'do sth callback'; } dosth('callback'); ?>
Ausgabe:
etw zurückrufen
Aber wir können nicht sicher sein, ob die Rückrufmethode aufgerufen werden kann, daher müssen wir viel zusätzliche Arbeit leisten, um zu überprüfen, ob die Rückrufmethode aufgerufen werden kann.
Gibt es eine bessere Möglichkeit, festzustellen, ob die Callback-Methode aufrufbar ist?
Wir können Callable verwenden, um zu erzwingen, dass der Parameter ein Callback-Typ ist, wodurch sichergestellt wird, dass die Callback-Methode aufrufbar sein muss.
Zum Beispiel ist die Callback-Methode eine nicht existierende Methode
<?php function dosth(callable $callback){ call_user_func($callback); } dosth('abc'); ?>
Nach der Ausführung wird eine Fehlermeldung angezeigt: TypeError: Das an dosth() übergebene Argument 1 muss aufrufbar sein
Das Programm kann die interne Verarbeitung von dosth nicht ausführen. Der Parametertyp wurde zum Schutz überprüft und verarbeitet.
Und wenn das Callable nach der Ausführung entfernt wird
<?php function dosth($callback){ call_user_func($callback); } dosth('abc'); ?>
, wird eine Warnung angezeigt: Warnung: call_user_func() erwartet, dass Parameter 1 eine gültige Callback-Funktion ist 'abc' nicht gefunden oder ungültiger Funktionsname
Das Programm kann die interne Verarbeitung von dosth ausführen, daher muss viel zusätzliche Arbeit geleistet werden, um zu prüfen, ob diese Rückrufmethode aufgerufen werden kann.
Wenn der Parameter der Methode eine Rückrufmethode ist, sollte daher Callable hinzugefügt werden, um die Angabe als Rückruftyp zu erzwingen. Dies kann Aufruffehler reduzieren und die Qualität des Programms verbessern.
Die oben genannte Methode stellt Ihnen vor, wie Sie den Rückruftyp in PHP Callable erzwingen können. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht Der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!
Weitere Artikel darüber, wie PHP Callable die Angabe des Rückruftyps erzwingt, finden Sie auf der chinesischen PHP-Website!