Beim Versuch, auf eine nicht-statische Methode als statische Funktion zuzugreifen, generiert PHP die Fehlermeldung Strenge Standards: Nicht- Die statische Methode sollte nicht statisch aufgerufen werden. Dieses Problem tritt häufig auf, wenn eine Klassenmethode verwendet wird, ohne zuvor ein Objekt der Klasse zu instanziieren.
1. Klassenobjekt angeben:
Um dieses Problem zu lösen, müssen Sie eine Instanz der Klasse erstellen, bevor Sie versuchen, ihre Methoden aufzurufen. Zum Beispiel anstelle von:
Page::getInstanceByName($page);
Verwenden Sie:
$pageInstance = new Page(); $pageInstance->getInstanceByName($page);
2. Methode als statisch markieren:
Wenn Sie beabsichtigen, eine Methode aufzurufen, ohne die Klasse zu instanziieren, können Sie die Methode innerhalb der Klasse als statisch definieren. Zum Beispiel:
class Page { public static function getInstanceByName($name) { // method implementation } }
Dadurch können Sie die Methode direkt über den Klassennamen aufrufen:
Page::getInstanceByName($page);
1. Testbarkeit:
Beachten Sie, dass statische Methoden und Singletons die Testbarkeit beeinträchtigen können. Möglicherweise möchten Sie alternative Entwurfsmuster in Betracht ziehen, um die Testfunktionen zu verbessern.
2. Konstruktoroptimierung:
Vermeiden Sie die Platzierung übermäßiger Aufgaben im Konstruktor. Der Konstruktor sollte nur das Versetzen des Objekts in einen gültigen Zustand übernehmen. Erwägen Sie das Einfügen von Datenabhängigkeiten, anstatt sie direkt vom Konstruktor abzurufen. Denken Sie daran, dass Konstruktoren keine Werte zurückgeben können und immer void zurückgeben.
Das obige ist der detaillierte Inhalt vonWie behebe ich den PHP-Fehler „Nicht-statischer Methodenaufruf statisch'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!