Jeżeli sładujesz dane w XML-u i masz uniwersalny format, który pozwala ci zapamiętać wszystko, np:[xml]<entry id="( wartość z uniqid() )"><param name="( coś tam )">( wartosć parama )</param><param (....)> (........) </param>(........)</entry>[/xml]itd. to robisz kasę do obsługi tego formatu, która ma np. takie metody:[php]<?php
$db->load($filename);
$db->save();
$db->listentry(); //zwraca id-ki wszystkich entry z db
$db->set($entry,$param,$value);
$db->get($entry,$param);
$db->listparam($entry); //zwraca name-y wszystkich param-ów z $entry
?>[/php]Możesz teraz mieć w jednym skrypcie mnóóóstwo otwartych baz danych i masz zapewnioną wygodną obsługę.
Co więcej: Możesz tworzyć klasy pochodne od klasy XMLDB, np klasę News:[php]<?php
$news->load($filename); //metoda odziedziczona!
$news->save(); //metoda odziedziczona!
$news->get($time); //zwraca pięć newsów wstecz od $time od razu sformatonane, do zaechowania na stronę.
$news->add($author,$title,$content); //dodaje newsa do db
?>[/php] Oczywiście - możnaby to robić na funkcjach i przekazywać im parametr $db. Czym właściwie różnią się takie podejścia? niczym! Wezmę jako przykład C/C++. Podczas komplikacji kodu C++ powstaje najpierw kod C i z niego dopiero powstaje kod assemblera, który po assemblacji daje plik wynikowy (najczęściej a.out, lub ELF

). Dzięki temu można stwierdzić jak wygląda implementacja obiektowości. A wygląda prymitywnie: zmienne klasy są pakowane do struktury, nazwy metod są lekko transformowane i do listy argumentów na pierwsze miejsce dodaje się wskaźnik do struktury! Programiści C wymyślili to już baaaardzo dawno temu, a praktyczne zastosowanie możemy znaleźć np. w kodzie Linuxa.(patrz -> struct file_operations). Cała kontrola dostępu do danych jest realizowana na poziomie parsera! tzn. jak ów widzi, że ktoś się próbuje z zewnątrz odwołać do zmiennej prywatnej to wywala errora i już! użycie prostej arytmetyki wskaźników pozwala na całkowite ominięcie tego "zabezpieczenia". Za używaniem klas przemawia ich wygoda. Kiedy mamy np. uchwyt socketa to wygodniej jest pisać [php]<?php $socket->send("GET / HTTP/1.1\n"); ?>[/php] niż [php]<?php send($socket,"GET / HTTP/1.1\n"); ?>[/php]. Wynik i tak będzie ten sam. Widzimy tutaj dobitnie, że klasy są swoistą nakładką na rzeczywistość. Na ich niekożyść wpływa zdecydowany spadek wydajności spowodowany ich używaniem. Niestety, aby ogarnąć większe projekty ich użycie jest niezbędne.