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

Dlaczego PHP5?

XML / WebServices

Chociaż podstawowa obsługa XML była wbudowana w PHP4, to jednak poprzednia implementacja obsługiwała tylko niewielki podzbiór możliwości drzemiących w technologiach XML-owych. Co więcej, część pakietów nigdy nie wyszła poza fazę eksperymentalną (np. DOM) a i w tych stabilnych zdarzały się błędy. Inne, kluczowe dla infrastruktury XML-owej specyfikacje (np. SOAP), były pisane jako osobne biblioteki lub pakiety PEAR. Biorąc pod uwagę słabość istniejących w PHP implementacji oraz rosnącą popularność technologii wykorzystujących specyfikacje z rodziny XML, twórcy PHP5 postanowili przepisać podsystemy wspomagające pracę z XML całkowicie od nowa. W efekcie PHP5 został wyposażony w bardzo dobrą i zaawansowaną obsługę XML-a oraz wiele rozszerzeń znacznie ułatwiających pracę ze zbiorami opisanymi w XML.

Obsługa standardów

Zauważmy, że wyszukiwane są wszystkie sekcje oznaczone jako , niezależnie od ich położenia w strukturze dokumentu XML-owego. Zastanówmy się, co zrobić, żeby wypisać tylko tytuły artykułów, bez głównego tytułu magazynu. Na szczęście w PHP5 jest to proste zadanie, a to dzięki implementacji specyfikacji XPath, która wspomaga wyszukiwanie elementów w dokumencie XML-owym, podobnie jak możemy to robić w systemie plików na dysku. Uruchomienie programu z Listingu 18 spowoduje wypisanie tylko interesujących nas artykułów wewnątrz danego numeru pisma.

Oczywiście przedstawione przykłady to tylko wierzchołek góry lodowej. PHP5 zawarto znacznie szersze wsparcie dla technologii XML, z czego z najważniejszych należy wymienić XSLT i sprawdzanie poprawności dokumentów XML (ang. validation) w oparciu o DTD, XML Schema i RelaxNG.

Trzeba przyznać, że ta mnogość skrótów i standardów składających się na świat XML może być trudna do opanowania dla początkującego użytkownika. Na szczęście w PHP5 znajdziemy też prostszą metodę manipulowania dokumentami: SimpleXML. Jest to prostszy interfejs nadbudowany na DOM: jego wykorzystanie powoduje, że podstawowe przetwarzanie dokumentu XML sprowadza się do zaledwie kilku linijek kodu (Listing 19). Ponieważ SimpleXML jest nakładką na standardowe API, dwie funkcje PHP5 (simplexml_import_dom($dom) i dom_import_simplexml($sxe)) umożliwiają konwersję pomiędzy dokumentami SimpleXML i DOM.

Web Services

Dzięki nowym modułom wbudowanym w PHP5 obsługa dokumentów XML stała się bardzo prosta. Od kilku lat budowane się jednak rozwiązania, które używają XML jako niskopoziomowej, wspomagającej technologii. Prawdopodobnie najbardziej popularnym ruchem w tym kierunku są WebServices i SOAP. Nie wdając się w szczegóły dotyczące sposobu funkcjonowania Web Services, możemy spokojnie stwierdzić, że ich obsługa z poziomu PHP5 jest dziecinnie prosta. Listing 20, w zaledwie 3 linijkach kodu, tworzy klienta SOAP i wywołuje zdalną metodę. W przedstawionym przykładzie posługujemy się testowym Web Service, dostępnym na stronach www.xmethods.net. Jak widać na wspomnianym Listingu 20, do stworzenia klienta potrzebny jest tylko standardowy plik opisujący Web Service - WSDL (ang. Web Service Definition Language). To naprawdę wszystko. W klasie SoapClient, po jej utworzeniu, automatycznie dostępne są wszystkie metody zdefiniowanew WSDL.

Prawdopodobnie PHP5 znacznie częściej będzie używany do tworzenia części klienckiej Web Service, ale gdyby zaszła konieczność zbudowania serwera, nasze zadanie w dalszym ciągu jest bardzo łatwe. Listing 21 pokazuje, jak szybko możemy zaimplementować Web Service zdefiniowany przez wykorzystywany już opis WSDL. Jedyna praca, jaką pozostawili nam twórcy rozszerzenia SOAP dla PHP5, to napisanie ciała metody realizującej konkretne zadanie - praktycznie bez dodatkowego kodu wspomagającego całą infrastrukturę Web Services.

Listing 18. Użycie XPath do pobrania części danych z XML

$dom = new DomDocument();
$dom->load("articles.xml");
$xp = new domxpath($dom);
$titles = $xp->query("/phpstarterkit/articles/article/title");
foreach($titles as $node) {
    print $node->textContent . "<br>";
}

Listing 19. Prostsze operacje na XML dzięki SimpleXML

$sxe = simplexml_load_file("articles.xml");
$articles = $sxe->xpath("/phpstarterkit/articles/article");
foreach($articles as $node) {
    echo $node->author.' : '.$node->title.'<br>';
}

Listing 20. Implementacja prostego klienta SOAP

<?php 
$client = new SoapClient("http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl"); 
$return_val = $client->getRate('Poland', 'France'); 
echo $return_val; 
?>

Listing 21. Implementacja prostego serwera SOAP

<?php
class SoapExRateHandler {
    public function getRate($country1, $country2){
        return 1.0;
    }
}
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("CurrencyExchangeService.wsdl");
$server->setClass(SoapExRateHandler);
$server->handle();
?>
« PDO
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-2020 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System