3 Stimmen

Zugriff auf nicht-statische Funktionen einer Klasse in PHP

Warum ist dies in PHP legal?

<?php
class Foo {
    public function test() {
        echo "hello\n";
    }
}

Foo::test();
?>

test() ist eine nicht statische Funktion, aber ich kann sie ohne Instanz aufrufen.

6voto

Mike B Punkte 31289

Es ist zwar legal, aber im Allgemeinen verpönt, bis Sie auf $this in Ihrer statisch aufgerufenen Methode, die einen schwerwiegenden Fehler auslösen wird.

5voto

mozillalives Punkte 1450

Ich glaube, das liegt an der Abwärtskompatibilität. In PHP4 gab es das static-Schlüsselwort für Methoden nicht (ich suche noch nach einer Referenz, aber bis jetzt habe ich nur das hier gefunden http://us2.php.net/manual/en/language.oop5.static.php ). Auf diese Weise kann PHP4-Code weiterhin ohne Probleme ausgeführt werden.

Es ist besser, statische Funktionen als solche zu deklarieren, und wenn Sie E_STRICT einschalten, werden Sie einen Hinweis darauf erhalten.

error_reporting(E_ALL | E_STRICT);

更新情報 Nun, das ist das Beste, was ich gefunden habe. http://bugs.php.net/bug.php?id=34990 y http://bugs.php.net/bug.php?id=47891 .

2voto

Alix Axel Punkte 146320

Desde el PHP-Handbuch :

Aufrufen nichtstatischer Methoden erzeugt eine Warnung der Stufe E_STRICT.

0voto

shufler Punkte 903

Dies funktioniert, weil Sie die Option E_STRICT Fehlerniveau. Sobald diese Funktion aktiviert ist, lässt PHP dies nicht mehr zu.

-2voto

Steven Smethurst Punkte 4265

Ich glaube nicht, dass man auf eine Methode einer Klasse zugreifen kann, ohne eine Instanz des Objekts zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X