Operator rozróżnienia zasięgu (::)
Uwaga! |
Poniższe dotyczy tylko PHP 4 i nowszych. |
Czasami dobrze jest odnosić się do funkcji i zmiennych w klasie bazowej lub odnosić się do funkcji i klas które nie mają jeszcze instancji. Służy do tego operator ::.
<?php |
Powyższy przekład wywołuje funkcję przyklad() z klasy A, ale nie tworząc obiektu tej klasy, przez co nie możemy napisać nic w stylu $a->przyklad(). Zamiast tego możemy wywołać przyklad() jako 'funkcję klasy', czyli jako funkcję tylko klasy, nie żadnego obiektu tej klasy.
IstniejÄ… funkcje klasy, ale nie ma zmiennych klasy. Faktycznie w czasie
wykonania nie ma żadnego obiektu. W związku z tym funkcje klasy nie mogą
używać żadnych zmiennych obiektu (ale mogą używać zmiennych lokalnych i
globalnych), ani w ogóle $this
.
W powyższym przykładzie, klasa B przedefiniowuje funkcję przyklad(). Orginalna definicja z klasy A jest zasłonięta i niedostępna, chyba że odwołasz się do konkretnej implementacji poprzez operator ::. Aby to zrobić, napisz A::przyklad() (powinieneś jednak użyć parent::przyklad(), tak jak to pokazano w następnej części).
W tym kontekście, istnieje bieżący obiekt i który ma zmienne obiektu. W
związu z tym jeśli funkcja jest użyta Z WEWNĄTRZ funkcji obiektu, możesz
używać $this
i zmiennych obiektu.