|
|
PHP (angielski akronim rekurencyjny, którego rozwinięcie to PHP Hypertext Preprocessor), pierwotnie nazwany Personal
Home Page - skryptowy język programowania, służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w
tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML (bądź XHTML). PHP jest podobny w założeniach do
dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany.
Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.
SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz
do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi
zarządzania bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z
serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z
użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a.
Apache jest otwartym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD,
Microsoft Windows). Po angielsku słowo Apache wymawia się epaczi, co brzmi tak samo jak a patchy (server), co było
określeniem tego serwera we wczesnym stadium jego rozwoju w 1995 roku, kiedy był on głównie zbiorem poprawek (patch)
nałożonych na serwer HTTP o nazwie NCSA.
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W maju 2003 jego udział wśród serwerów wynosił 62%. W
połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych
środowisk w firmach oferujących miejsce na serwerach sieciowych.
|
XCIX. Przeciążanie właściwości obiektów i
wołania ich metod
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.
|
| Ostrzeżenie |
|
To rozszerzenie nie jest częścią PHP 5. PHP 5
obsługuje __get(),
__set() i __call() natywnie. Zobacz stronę
Przeciążanie w
PHP 5 aby uzyskać więcej informacji.
|
Do zbudowania tego rozszerzenia nie są wymagane żadne
zewnętrzne biblioteki.
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.
To rozszerzenie nie definiuje posiada żadnych dyrektyw
konfiguracyjnych w pliku php.ini.
To rozszerzenie nie posiada żadnych rodzajów
zasobów.
To rozszerzenie nie posiada żadnych stałych.
Kilka prostych przykładów demonstrujących użycie
funkcji overload():
Przykład 1. Przeciążanie klasy PHP
<?php
class OO {
var $a = 111;
var $elem = array('b' => 9, 'c' => 42);
// Funkcja obsługująca pobierania właściwości
function __get($wl_nazwa, &$wl_wart)
{
if (isset($this->elem[$wl_nazwa])) {
$wl_wart = $this->elem[$wl_nazwa];
return true;
} else {
return false;
}
}
// Funkcja obsługująca ustawianie właściwości
function __set($wl_nazwa, $wl_wart)
{
$this->elem[$wl_nazwa] = $wl_wart;
return true;
}
}
// Umożliwiamy przeciążanie obiektów klasy OO
overload('OO');
$o = new OO;
echo "\$o->a: $o->a\n"; // print: $o->a: 111
echo "\$o->b: $o->b\n"; // print: $o->b: 9
echo "\$o->c: $o->c\n"; // print: $o->c: 42
echo "\$o->d: $o->d\n"; // print: $o->d:
// 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);
?> |
|
- Spis treści
- overload -- Umożliwienie
przeciążania właściwości i wołania metod dla klasy
|