Heim > Artikel > Backend-Entwicklung > Rekursion – Kann ich benutzerdefinierte Funktionen in PHP-Mitgliedsmethoden schreiben?
Kann ich benutzerdefinierte Funktionen in PHP-Mitgliedsmethoden schreiben?
Ich habe eine Funktion in einer Methode definiert, aber beim Aufruf wurde ein Fehler gemeldet
Dies ist die Methode, die den Fehler gemeldet hat
Der Fehler wurde wie folgt gemeldet
Aber ich habe eine andere Methode, die auch Funktionen schreibt und eine Rekursion durchführt, aber es wird kein Fehler gemeldet.
Dies ist die Schnittstelle zum Aufrufen dieser beiden Methoden
Warum wird ein Fehler gemeldet? Kann es jemand erklären oder einen guten Weg finden, damit umzugehen
Kann ich benutzerdefinierte Funktionen in PHP-Mitgliedsmethoden schreiben?
Ich habe eine Funktion in einer Methode definiert, aber beim Aufruf wurde ein Fehler gemeldet
Dies ist die Methode, die den Fehler gemeldet hat
Der Fehler wurde wie folgt gemeldet
Aber ich habe eine andere Methode, die auch Funktionen schreibt und eine Rekursion durchführt, aber es wird kein Fehler gemeldet.
Dies ist die Schnittstelle zum Aufrufen dieser beiden Methoden
Warum wird ein Fehler gemeldet? Kann es jemand erklären oder einen guten Weg finden, damit umzugehen
Warum schreiben Sie Ihre benutzerdefinierte Funktion nicht als Mitgliedsmethode in der Klasse?
Vielen Dank, der Fehler, den Sie hier gemeldet haben, liegt daran, dass Sie die getTree-Funktion an anderen Stellen definiert haben.
Es gibt auch einen besseren PHP-Abschluss, der wahrscheinlich wie folgt lautet:
<code>class Test{ public function index(){ $hello_closures = function ($str){ echo $str; }; $hello_closures("hello , php closures function"); } }</code>
Hier finden Sie die offizielle Dokumentation, die leicht zu verstehen ist: http://php.net/manual/zh/func...
Die Fehlermeldung ist bereits offensichtlich. Sie können die getTree-Funktion nicht wiederholt definieren. Sie haben sie bereits in LabelController definiert
Die Funktionen (keine Klassenmethoden) in PHP sind alle global, das heißt, egal, ob Sie sie global oder in einer Funktion definieren, sie werden als global betrachtet (das ist anders als in js, lassen Sie sich nicht verwirren). ).
PHP unterstützt keine Funktionsüberladung (dh keine doppelten Namen), daher ist eine wiederholte Deklaration von Funktionen nicht zulässig (wenn es um Überladung geht, kann es in Klassen implementiert werden, aber die Bedeutung ist völlig anders. Es fühlt sich an wie eine Fehlerbehandlungsfunktion, die aber der benutzerfreundlichen Anzeige dient, aber ich persönlich halte sie für nutzlos).