- __construct(): wywoływana w momencie tworzenia egzemplarza obiektu
- __destruct(): wywoływana w momencie usuwania obiektu
- __get(): wywoływana w momencie odczytywania wartości z nieistniejącej właściwości
- __set(): wywoływana w momencie zapisywania wartości w nieistniejącej właściwości
- __call(): wywoływana w momencie wywoływania nieistniejącej metody
- __toString(): wywoływana w momencie wyświetlania obiektu
- __clone: wywoływana w momencie klonowania obiektu.
- __autoload: nie jest metodą magiczną lecz działa podobnie... ładuje plik z klasą.
__construct() i __destruct() to odpowiednio konstruktor i destruktor. Pierwszy zazwyczaj wykorzystywany jest do przygotowania wszystko potrzebnego przez nowo powstały egzemplarz obiektu a destruktor kończy działanie egzemplarza zwalniając zasoby, kończąc połączenia z bazami danych itd. Prosty przykład: Stworzenie egzemplarza obiektu poprzez $x = new foo(); wywoła konstruktor oraz, oraz destruktor (gdy egzemplarz nie będzie już potrzebny, zazwyczaj "na końcu" skryptu, lecz nie zawsze).
__get() i __set() ułatwią nam stworzenie mechanizmów dostępowych, co ilustrują przykłady: Wewnątrz klasy mamy prywatną zmienną/tablicę i by uzyskać dostęp do danych zawartych w tej tablicy zastosowaliśmy metodę __get(), która oczekuje jednego parametru - nazwy właściwości. Jak widać wywołaliśmy $x->test co wyświetli tekst "testujemy". Niejawnie wywołana metoda __get przekazała wartość z tablicy. Oto przykład z __set, która oczekuje dwóch parametrów - nazwy właściwości i jej wartości.
Metoda __call pozwoli nam tworzyć klasy robiące za np. przekierowania do innych klas - np. mamy zbiór klas obsługujących różne bazy danych mające określone metody. Możemy zrobić klasę nadrzędną, która będzie "przekierowywała" do odpowiedniej klasy obsługującej wybraną przez nas bazę danych. Prosty przykład: Metoda show_bar() została wywołana jako metoda klasy foo. W klasie tej ona nie istnieje więc niejawnie została wywołana metoda _call oczekująca dwóch argumentów - nazwy metody oraz tablicy z parametrami przekazywanymi do tej metody. Funkcja call_user_func_array pozwala na wywołanie funkcji użytkownika i przekazania do niej argumentów z tablicy. W powyższym przykładzie call_user_func_array wywołuje metodę obiektu a nie zwykłą funkcję.
PHP5 kopiuje obiekty przez odwołanie, a nie przez wartości, dlatego by skopiować zawartość obiektu należy użyć słowa clone. W przeciwnym razie drugi obiekt będzie po prostu odwołaniem do pierwszego. Klonujemy obiekt $x. Jak zauważymy ponowne wywołanie na końcu $x->show_tekst(); zwróci pierwszy łańcuch. Gdyby w wierszy $y = clone $x; nie byłoby "clone" to $x->show_tekst(); zwróciłoby ostatnią wartość jako że $y byłoby "aliasem" do $x.
Funkcja __autoload ułatwi nam życie. Jeżeli mamy klasy w jednym katalogu to możemy zautomatyzować proces ich inkludowania: Funkcja (nie metoda klasy) ta oczekuje jednego parametru - nazwy klasy ("KLASA"). Jeżeli nie ma dostępnej klasy o podanej nazwie to niejawnie wywołana zostanie funkcja __autoload, która załaduje (jeżeli może) plik z klasą.
Jeżeli ścieżka katalogów, w których PHP szuka plików jest długa to funkcja __autoload może działać dość wolno jako że interpreter będzie przeszukiwał wszystkie katalogi z listy zanim wywoła tą funkcję.
