Warum führt der statische Aufruf einer nichtstatischen Methode in PHP zu einem Fehler?

Susan Sarandon
Freigeben: 2024-11-24 11:42:11
Original
829 Leute haben es durchsucht

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

Informationen zum statischen Methodenaufruffehler

In PHP stößt das bereitgestellte Codefragment auf die Fehlermeldung:

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12
Nach dem Login kopieren

Dieser Fehler tritt auf, wenn eine nicht statische Methode in der Page-Klasse statisch aufgerufen wird, was nicht der Fall ist zulässig.

Behebung

Um dieses Problem zu beheben, muss die Methode getInstanceByName() in der Page-Klasse als statisch deklariert werden. Ändern Sie die Zeile:

function getInstanceByName($name='')
Nach dem Login kopieren

in:

public static function getInstanceByName($name='')
Nach dem Login kopieren

Indem Sie die Methode als statisch deklarieren, können Sie sie mit dem Klassennamen aufrufen, etwa:

$r = Page::getInstanceByName($page);
Nach dem Login kopieren

Zusätzliche Überlegungen

  • Statische Methoden und Testbarkeit: Statische Methoden können nicht verspottet oder stubbiert werden, was das Testen von Code, der von ihnen abhängt, erschweren kann. Erwägen Sie stattdessen die Verwendung von Abhängigkeitsinjektion, bei der Sie Daten über seinen Konstruktor oder seine Methoden an das Objekt übergeben.
  • Konstruktorkomplexität: Der Konstruktor in der Page-Klasse erledigt zu viel Arbeit, z. B. das Abfragen des Datenbank. Konstruktoren sollten nur zum Initialisieren des Objektzustands und nicht zum Ausführen komplexer Operationen verwendet werden.

Das obige ist der detaillierte Inhalt vonWarum führt der statische Aufruf einer nichtstatischen Methode in PHP zu einem Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage