Przejdź do głównej zawartości

Posty

Wyświetlanie postów z październik, 2012

Dlaczego nie PHP - $this w metodach statycznych (odc. 4)

W języku PHP widziałem już kilka dziwnych zjawisk. Jednak to na co natknąłem się niedawno, powaliło mnie zupełnie na kolana. PHP w momencie gdy nie ma ustawionego poziomu raportowania błędów na "strict" pozwala na wywoływanie metod, które nie są zadeklarowane jako statyczne przy użyciu operatora :: oraz odwrotnie - metody statyczne można wywoływać w kontekście obiektu poprzez $this. Dla przykładu przedstawię kod. <?php class A { public function test () { return B :: test (); } } class B { public function test () { return get_class ( $this ); } } $obj = new A (); echo $obj -> test (); ?>   Zazwyczaj takie działania w innych językach powodują błędy. W PHP, które nie jest ustawione na "strict" wykona powyższy kod. Co ciekawe wynik będzie dosyć zaskakujący. Na logikę w kontekście statycz