Podręcznik PHP
Poprzedni
Rozdział 14.
Klasy i Obiekty
Następny
::
Uwaga!
Poniższe dotyczy tylko PHP 4.
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::.
class A {function przyklad() {echo "Jestem orginalną funkcją A::przyklad(). br \n";}} class B extends A {function przyklad() {echo "Jestem przedefiniowaną funkcją B::przyklad(). br \n"; A::przyklad();}} / / nie ma obiektu klasy A. / / poniższe wyświetli / / Jestem orginalną funkcją A::przyklad(). br A::przyklad(); / / stwórz nowy obiekt klasy B. $b = new B; / / poniższe wyświetli / / Jestem przedefiniowaną funkcją B::przyklad(). br / / Jestem orginalną funkcją A::przyklad(). br $b - przyklad();
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.
Poprzedni
Spis treści
Następny
Konstruktory
Początek rozdziału