::

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.

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:39