Heim  >  Artikel  >  Backend-Entwicklung  >  Warum führt der statische Aufruf einer nichtstatischen Methode in PHP zu einem Fehler?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-24 11:42:11831Durchsuche

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

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='')

in:

public static function getInstanceByName($name='')

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

$r = Page::getInstanceByName($page);

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!

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