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.
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.
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 .
Desde el PHP-Handbuch :
Aufrufen nichtstatischer Methoden erzeugt eine Warnung der Stufe E_STRICT.
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.