Gratulacje, kretor Mój egrafik został zakończony. Jeżeli rejestrowałeś się w tym kreatorze, pamiętaj aby kliknąć w link potwierdzający, wysłany na Twój adres email. Jeżeli tego nie zrobisz, nie będziesz mógł się zalogować, a dodane przez Ciebie wpisy nie zostaną opublikowane.
Celem tego rozszerzenia jest umożliwienie przeciążania dostępu do
właściwości obiektów oraz wołania metod. Rozszerzenie to definiuje tylko
jedną funkcję, overload(), która przyjmuje jako
parametr nazwę klasy dla której przeciążanie powinno być udostępnione.
Klasa ta powinna mieć zdefiniowane odpowiednie metody, jeżeli chce
korzystać z tej dodatkowej funkcjonalności: __get(),
__set() oraz __call() odpowwiednio
dla pobierania/ustawiania wartości właściwości, lub wołania metod. Tym
sposobem przeciążanie może być dostępne wybiórczo. Wewnątrz tych funkcji
bsługujących przeciążanie, ono samo jest niedostępne by mieć możliwość
normalnego dostępu do właściwości obiektu.
Ostrzeżenie
Ten moduł jest w stadium
EKSPERYMENTALNYM. Oznacza to, że zachowanie tych funkcji,
ich nazwy, w zasadzie wszystko udokumentowane tutaj może zostać zmienione w
przyszłych wersjach PHP bez wcześniejszego uprzedzenia. Używaj tego modułu na
własne ryzyko.
Chcąc używać tych funkcji musisz skompilować PHP z opcją --enable-overload.
Od PHP 4.3.0 to rozszerzenie jest włączone domyślnie. Możesz wyłączyć
wsparcie dla przeciążania opcją --disable--overload.
PHP w wersji dla systemów
Windows posiada wbudowaną obsługę dla tego rozszerzenia. Nie trzeba ładować
żadnych dodatkowych rozszerzeń aby korzystać z tych funkcji.
Notatka:
Wsparcie dla przeciążania jest wbudowane od wersji PHP 4.3.0.
// dodajemy nową pozycję do tablicy $elem w OO $o->x = 56;
// tworzymy egzemplarz klasy stdclass (wbudowanej w PHP 4) // $val nie jest przeciążane! $val = new stdclass; $val->prop = 555;
// Ustawiamy "a" jako tablicę z obiektem $val w środku // Lecz __set() włoży to do tablicy $elem $o->a = array($val); var_dump($o->a[0]->prop);
?>
Ostrzeżenie
Ponieważ jest to rozszerzenie eksperymentalne, nie wszystko działa.
Brakuje aktualnie wsparcia dla __call(), można
przeciążać tylko operacje pobierania i ustawiania właściwości obiektu.
Nie można także wołać funkcji obsługi przeciążania jak normalnych metod
istniejących w klasie, a __set() działa tylko do
jednego poziomu dostępu do właściwości.
Spis treści
overload -- Umożliwienie przeciążania właściwości i wołania metod dla klasy