Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Dlaczego PHP5?

SPL

Poprzednie akapity pozwoliły nam dokładniej zobaczyć, jak dużą rewolucją jest wersja piąta PHP, szczególnie w kontekście programowania obiektowego. Łatwy w opanowaniu język skryptowy zyskał zupełnie nową siłę wyrazu, co znacząco rozszerza zakres jego stosowania. Możliwe staje się używanie konstrukcji i wzorców projektowych, które do tej pory były trudne do oprogramowania. Otwiera to drogę do budowania bardziej złożonych bibliotek. Tym tropem idzie SPL (ang. Standard PHP Library), czyli standardowa biblioteka PHP udostępniająca gotowe implementacje często spotykanych wzorców projektowych (np. Iterator, Observer) i definiująca hierarchię wyjątków.

Podstawowym wzorcem projektowym dostępnym w SPL jest Iterator. Jest on bardzo prosty w swej koncepcji i od dawna obecny w PHP w postaci konstrukcji foreach. Wiemy doskonale, jak łatwo wykonać operacje na wszystkich elementach tablicy, iterując kolejno po jej zawartości. Dzięki SPL ta prosta koncepcja została rozszerzona na inny typy danych, jak choćby zawartość katalogu w systemie plików. Listing 13 pokazuje dobrze znaną konstrukcję zastosowaną do zbiorów dyskowych.

Istotą iteratora jest całkowite oddzielenie typu zbioru danych i metody jego przeglądania. Dowolna kolekcja danych udostępniająca iterator może być przeszukiwana w ten sam sposób, niezależnie od tego, czy jest to tablica, zbiory na dysku czy rekordy z DB. Takie podejście do zestawu informacji pozwala na ogólne budowanie operacji na danych, np. sortowanie i filtrowanie.

Innym ważnym składnikiem SPL, rozbudowanym w PHP5.1, jest cała hierarchia wyjątków. Zgłaszanie sytuacji wyjątkowych tylko i wyłącznie przy użyciu klasy Exception nie jest najdoskonalszym rozwiązaniem - w ten sposób ograniczamy sobie możliwość selektywnego przechwytywania różnego typu wyjątków i odpowiedniego reagowania w zależności od typu błędu. Jeśli pomyślimy o błędzie łączenia się z bazą danych i błędzie wynikającym z podania nieprawidłowego argumentu do funkcji, z łatwością dojdziemy do wniosku, że są to sytuacje wyjątkowe, ale o zupełnie różnym ciężarze gatunkowym. O ile użytkownik może jeszcze raz podać dane wejściowe i prawidłowo uruchomić metodę, to na brak komunikacji z DB najczęściej nie jest w stanie nic poradzić. Opisane sytuacje są wyjątkowe, ale powinny być zgłaszane poprzez różne typy wyjątków. W SPL znajdziemy właśnie takie gotowe, predefiniowane klasy rozszerzające podstawowy Exception. Wracając do przedstawionego przykładu, najprawdopodobniej użylibyśmy RuntimeException dla oznaczenia problemów z DB i InvalidArgumentException w przypadku niewłaściwego argumentu wywołania.

SPL w naturalny sposób wykorzystuje nowe cechy obiektowe PHP5. Należy spodziewać się, że biblioteka ta będzie się rozrastać i w przyszłości stanie się nieodzownym elementem większości skryptów PHP. Już teraz jest to silne narzędzie, któremu z pewnością warto poświęcić uwagę.

Listing 13. Użycie iteratora do przeglądania zawartości dysku

<?php
$path = 'c:\\';
$diterator = new DirectoryIterator($path);
foreach($diterator as $dirobj){
    if ($dirobj->isDir()) {
        echo '<b>'.$dirobj->getFilename().'</b>';
    } else {
        echo $dirobj->getFilename();
    }
    echo '<br>';
}
?>
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (5)
Brakujące listingi
Czwartek 11 Grudzień 2008 8:58:45 am - feft

Widzę, że do dzisiaj nie pojawiły się brakujące listingi - wielka szkoda.
Piotr

listingi
Wtorek 07 Sierpień 2007 8:14:16 am - Olimpia_ona

"Na Listingu 16 zaprezentowaliśmy prosty plik XML, którym będziemy manipulować w kolejnych przykładach."
A gdzie ten listing? Nie ma też listingu 17.
XML / WebServices to interesujący mnie temat, szkoda że z tego artykułu nic się nie dowiedziałam.

super
Czwartek 21 Czerwiec 2007 3:35:34 pm - pawelad <pawelkostomloty_at_op.pl>

Kocham obiektowosc a ostatnio interesuje sie php. Wasza stronka to miod na moje serce. No to macie kolejnego wyznawce.

magiczne metody, przestrzenie nazw
Sobota 11 Marzec 2006 11:38:11 am - mysz

Od wersji php5.1 doszły dwie magiczne metody: __isset i __unset, wywoływane, jak ich nazwa wskazuje, gdy na własności obiektu użyje się funkcji isset() lub unset(). Bardzo przyjemne.

A co do przestrzeni nazw, to mój sposób na implementacje ich w PHP5: http://diary.urzenia.net/?p=261

techniki obiektwe rulezzz
Sobota 28 Styczeń 2006 5:37:00 pm - emp

Ja sobie osbiście nie wyobrażam robić projekt w php bez udogodnien dla technik obiektowych... choć te narazie w wersji 5 wygladaja dość żałośnie to wole to od braku takich udogodnien.. pozatym łapanie wyjątków to podstawowe udogodnienie bez ktorego ciężko się obejśc w większych projektach... tak ja wiem ze takie powstały tylko przy użyciu php5 moze je wykonać jeden człowiek a nie zespół... czcionka jest qrefsko mała ledwo widze co pisze..

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System