Oto dokumentacja z static
kluczowego php.net:Dlaczego właściwości statyczne nie są dostępne przez "->", ale są dostępne przez "::"?
Właściwość zadeklarowana jako statyczne nie mogą być dostępne z instancji klasy obiektu (choć metoda statyczna może).
Dlaczego poniższy kod działa?
Oto ich przykładowy kod (ja skrócić):
<?php
class Foo
{
public static $my_static = 'foo';
}
$foo= new Foo();
print $foo::$my_static; //print 'foo'
?>
Dlaczego $foo::$my_static still
tu pracuje? Dziękuję wszystkim!
Czy włączono opcję "error_reporting()"? Czy otrzymałeś ostrzeżenia lub powiadomienia? Strona internetowa zwraca uwagę na następujące kwestie: 'Uwaga: W PHP 5, wywołanie metod statycznych generuje ostrzeżenie o poziomie E_STRICT.". To może być powiązane. Jakiej wersji PHP używasz? –
Nie ma tego przykładu dosłownie z podręcznika PHP. Po prostu trochę to skróciłem. Bez ostrzeżenia lub powiadomienia na pewno. I używam 5.5 –
Spróbuj użyć $ foo-> my_static lub wykonaj funkcję wewnątrz klasy foo, która używa $ this-> my_static, a zobaczysz ostrzeżenie. Nie można jej użyć wewnątrz instancjonowanego obiektu klasy. – kainaw