Mam takie pytanie, bo spotkałem się w jakiejś dokumentacji że metod statycznych nie można wywoływać mając utworzony obiekt klasy czyli
<?php class klasa { } public function niestatyczna() { } } klasa::statyczna ///wywołanie poprawne $klasa = new klasa(); $klasa->statyczna //niby niepoprawne ale normalnie mi to funkcjonuje ?>
Poza tym wywołanie metody niestatycznej w taki sposó też działa (choć jest komunikat E_STRICT)
<?php klasa::niestatyczna; ?>
Poza tym self:: służy niby do wywoływania metod statycznych ale jak zrobie takie wywołanie
<?php class klasa { self::niestatyczna; } public function niestatyczna() { } } klasa::statyczna; //działa wewnątrz odwołanie self do niestatycznej metody ?>
gdzie self sięodwołuje do metody niestatycznej to też działa.
Więc jak to jest z tymi metodami bo z tego co widzę to niezależnie czy jest ona static czy nie to można odwołać się do niej przez :: oraz -> (ewentualny komunikat E_STRICT). Oczywiście zakładamy że odrzucam wszędzie zastosowanie $this (żeby poprawnie odwołać się za pomocą :: )