Neden bu PHP yasaldır?
<?php
class Foo {
public function test() {
echo "hello\n";
}
}
Foo::test();
?>
testi () bir statik olmayan işlev ama ben bir örneği olmadan erişebilirsiniz.
Ben çünkü geriye doğru uyumluluk inanıyorum. PHP4 size yöntemleri için statik anahtar kelime yoktu (hala referans arıyor, ama şimdiye kadar bu ben buldum hepsi http://us2.php.net/manual/en/language.oop5.static.php). Bu şekilde, PHP4 kod hala bir sorun olmadan çalıştırabilirsiniz.
Bu gibi statik fonksiyonları bildirmek için iyi bir uygulamadır ve E_STRICT açmak eğer bu konuda bir bildirim görürsünüz.
error_reporting(E_ALL | E_STRICT);
Update: iyi, bu ben http://bugs.php.net/bug.php?id=34990 ve http://bugs.php.net/bug.php?id=47891 buldum en iyisidir.
Kimden PHP Manual:
Calling non-static methods statically generates an E_STRICT level warning.
Eğer E_STRICT hata düzeyi etkin değil çünkü bu çalışır. Bir kez etkin PHP bunu size izin duracaktır.