PHP Web 2.0.
Tworzenie aplikacji
typu mashup
Autor: Shu-Wai Chow
T³umaczenie: Maciej Jezierski, Rados³aw Meryk
ISBN: 978-83-246-1609-1
Format: 170x230, stron: 240
• Jak stosowaæ mechanizmy dostarczane przez gigantów Web 2.0?
• Jak stworzyæ swoj¹ w³asn¹, prost¹ wyszukiwarkê?
• Jak zintegrowaæ treœci z Flickr i Google Maps?
Serwisy takie, jak Google Maps, Flickr, YouTube, MySpace, to symbole nurtu Web 2.0.
Nie da siê ukryæ, ¿e dorównaæ takim gigantom bêdzie Ci trudno. Wa¿ne jednak jest to,
¿e treœci i mechanizmów dostarczanych przez nich mo¿esz u¿ywaæ równie¿ i Ty.
Wykorzystuj¹c ich API oraz dostêpne us³ugi sieciowe, mo¿esz stworzyæ ca³kowicie nowy
serwis, oferuj¹cy takie mo¿liwoœci, o których nikomu wczeœniej siê nawet nie œni³o!
W³aœnie dziêki tej ksi¹¿ce dowiesz siê, w jaki sposób po³¹czyæ treœci i mo¿liwoœci wielu
serwisów w ramach nowej – Twojej – aplikacji WWW, korzystaj¹c z jêzyka PHP.
Poznasz zasady dzia³ania stron agreguj¹cych treœci, a u¿ywanie technologii XML-RPC
nie bêdzie stanowi³o dla Ciebie problemu. Lektura ksi¹¿ki
„
PHP Web 2.0 Mashup
”
pozwoli Ci poznaæ zasady pracy z ¿¹daniami typu REST. Poznasz metody GET i POST
oraz nauczysz siê przetwarzaæ odpowiedzi w formacie XML, korzystaj¹c z biblioteki
SAX. Ju¿ wkrótce bêdziesz móg³ sam stworzyæ prost¹ wyszukiwarkê czy te¿ w³asn¹
"szafê graj¹c¹", korzystaj¹c¹ z danych YouTube i Last.fm. Dodatkowo bêdziesz mia³
mo¿liwoœæ poznania API dostêpnego miêdzy innymi w Google Maps, internetowej bazie
danych UPC oraz ksiêgarni Amazon. Je¿eli chcesz stworzyæ nowy serwis agreguj¹cy
treœci, jest to obowi¹zkowa pozycja dla Ciebie!
• Funkcjonowanie stron agreguj¹cych treœci
• Wykorzystanie techniki XML-RPC
• Przetwarzanie odpowiedzi przy u¿yciu SAX
• ¯¹dania REST
• Dzia³anie metod POST i GET
• Jêzyk WSDL
• Zastosowanie kana³ów RSS
• Interfejs API Amazon
• Interfejs API Google Maps
• Interfejs API internetowej bazy danych UPC
• Interfejs API Flickr
• Zastosowanie obiektu XMLHttpRequest i jego rola w technologii AJAX
Stwórz nowy projekt, korzystaj¹cy z mo¿liwoœci gigantów Web 2.0!
Spis treci
5
Spis treci
O autorze
9
O recenzencie
11
Wstp
13
Rozdzia 1. Wprowadzenie do aplikacji typu mashup
17
Web 2.0 i mashup
19
Znaczenie danych
19
Spoecznoci uytkowników
20
Jak bdziemy tworzy aplikacje typu mashup
21
Wicej aplikacji typu mashup
22
Rozdzia 2. Zrób zakupy w Amazon
23
Podsumowanie projektu
23
XML-RPC
24
Struktura XML-RPC
24
Odpowied XML-RPC
29
Obsuga XML-RPC w PHP
31
Wykonywanie dania XML-RPC
31
Przetwarzanie odpowiedzi XML-RPC
40
Tworzenie klasy parsujcej XML-RPC
41
Wykorzystanie PEAR do obsugi XML-RPC
44
REST
46
Praca z REST w PHP
48
Wykonywanie dania REST
48
Przetwarzanie odpowiedzi REST
55
Interfejs API internetowej bazy danych UPC
65
Interfejs API Amazon
67
Przegld ECS
68
Budowa dania REST ECS
69
Tworzenie aplikacji typu mashup
71
Wyszukiwanie produktów
71
Podsumowanie
84
Spis
treci
6
Rozdzia 3. Stwórz wasn wyszukiwark
85
Podsumowanie projektu
85
SOAP
86
Web Services Descriptor Language (WSDL) i XML Schema Data (XSD)
87
Podstawowa struktura WSDL
87
Komunikat SOAP
99
Klasa SoapClient w PHP
103
Tworzenie parametrów
104
Tworzenie instancji SoapClient
105
Wykonywanie wywoania za pomoc metod SoapClient
107
Obsuga odpowiedzi SOAP
110
Usuga sieciowa Microsoft Live Search
113
Korzystanie z wyszukiwania
113
Usuga Yahoo! Search
117
Korzystanie z wyszukiwania stron internetowych
117
Tworzenie strony agregujcej
119
Podsumowanie
124
Rozdzia 4. Wasna szafa grajca z teledyskami
125
Podsumowanie projektu
125
XSPF
126
RSS
129
Przegld YouTube
136
Interfejs programistyczny YouTube
137
Przegld Last.fm
139
Usugi internetowe Audioscrobbler
140
Parsowanie za pomoc PEAR
141
Instalacja i korzystanie z pakietów
142
File_XSPF
143
Services_YouTube
144
XML_RSS
147
Tworzenie aplikacji typu mashup
150
Architektura aplikacji typu mashup
150
Strona gówna
151
Strona nawigacyjna
152
Strona z zawartoci
153
Korzystanie z aplikacji typu mashup
155
Podsumowanie
158
Rozdzia 5. Zdjcia londyskiego metra
159
Podsumowanie projektu
159
Wstpne planowanie
160
Znalezienie informacji o stacjach metra
161
Integracja serwisów Google Maps i Flickr
162
Kolejno operacji w aplikacji
163
RDF (Resource Description Framework)
164
Spis treci
7
SPARQL
166
Analiza przedmiotu zapytania
167
Anatomia zapytania SPARQL
168
Klauzule WHERE w jzyku SPARQL
169
Dodatkowe wasnoci jzyka SPARQL
177
RDF API for PHP (RAP)
177
Obiekt XMLHttpRequest
180
Przegld informacji na temat obiektu XMLHttpRequest
181
Korzystanie z obiektu
182
Notacja JSON (JavaScript Object Notation)
186
Przegld obiektów JavaScript
187
Struktura JSON
187
Korzystanie z waciwoci JSON
188
Serializacja odpowiedzi JSON
189
Interfejs API Google Maps
190
Tworzenie mapy
191
Geokodowanie
192
Znaczniki
194
Zdarzenia
195
Obiekty InfoWindow
195
Interfejs API Flickr Services
198
Wykonywanie operacji wyszukiwania
199
Interpretacja wyników zwróconych przez usug
200
Pobieranie fotografii lub strony z fotografiami
202
Tworzenie aplikacji typu mashup
203
Tworzenie bazy danych i wypenianie jej danymi
204
Klasa interfejsu z baz danych — TubeSource
214
Gówny interfejs uytkownika
216
Wykorzystanie usug Flickr i technologii AJAX
220
Podsumowanie
230
Skorowidz
231
1
Wprowadzenie
do aplikacji typu
mashup
Strony agregujce (mashup), okrelane równie przez Wikipedi jako hybrydowe aplikacje in-
ternetowe, staj si w ostatnich latach coraz popularniejszym kierunkiem rozwoju sieci. S
one dokadnie tym, na co wskazuje ich nazwa — aplikacjami internetowymi, które pobieraj da-
ne z jednego lub kilku róde i prezentuj je w nowy sposób. Waciciele danych chtnie udostp-
niaj swoje zasoby zewntrznym uytkownikom. W wielu przypadkach oferuj interfejsy progra-
mistyczne (API) oparte na standardowych protokoach usug internetowych, które z atwoci
mog by zaimplementowane w rónych jzykach programowania, wczajc w to PHP. Kadego
dnia pojawiaj si strony agregujce tworzone przez ludzi, którzy w innowacyjny sposób cz
dane.
Jednym z przykadów jest witryna Wii Seeker. Kiedy w listopadzie 2006 roku pojawia si na
rynku konsola Nintendo Wii, wiadomo byo, e zrodz si problemy z jej zakupem. Zadaniem
witryny Wii Seeker bya pomoc w odnalezieniu sklepu, w którym dostpne s konsole, poprzez
poczenie informacji o dostawach z danymi Google Maps. Znacznik na mapie Google Maps
wskazywa sklep. Kiedy uytkownik klikn znacznik, wywietlane byy informacje o sklepie,
m.in. adres. Oprócz tego pojawiaa si równie informacja o liczbie konsol oferowanych do sprze-
day w sklepie w dniu premiery. Dziki temu, e na mapie wywietlane byy dane na temat wiel-
koci dostawy, uytkownik móg odszuka sklep pooony najbliej swojego domu i tak zapla-
nowa zakupy, aby mie jak najwiksze szanse nabycia Wii.
Po wypuszczeniu konsoli na rynek strona zostaa uzupeniona o informacje o aukcjach w ser-
wisie eBay i produktach dostpnych w Amazon. Dodano take sklepy sieciowe takie jak Circuit
PHP Web 2.0. Tworzenie aplikacji typu mashup
18
City i Wal-Mart. Zamiast pokazywa informacje o zapasach konsol Nintendo Wii w kadym
sklepie, witryna umoliwia uytkownikom wymian informacji na temat dostpnoci konsol
w poszczególnych sklepach.
Innym przykadem witryny mashup jest Astrolicio.us. Pobiera ona dane z takich witryn jak Di-
gg.com, Google News oraz Google Videos i prezentuje je na jednej stronie. W ten sposób
powsta portal z biecymi informacjami o astronomii.
Na stronie gównej uytkownik moe szybko przejrze tematy i wybra te, które go interesuj.
Wiadomoci prezentowane s w postaci wypunktowanej listy zawierajcej nagówki i skrócon
Rozdzia 1. • Wprowadzenie do aplikacji typu mashup
19
tre . Zamiast filmów widniej ich miniaturki. Po klikniciu cza uytkownik zostanie przenie-
siony na stron ródow artykuu lub filmu. Strona jest czytelna, prosta i zawiera duo infor-
macji. Bardzo atwo j stworzy za pomoc interfejsów API róde danych. Prawdopodobnie jej
zrobienie nie zajo autorowi wicej ni jeden wieczór.
Web 2.0 i mashup
Dlaczego w cigu zaledwie kilku lat aplikacje typu mashup znalazy tak powszechne zastoso-
wanie? Ich historia zacza si kilka lat temu. Po pkniciu baki internetowej w 2001 roku fir-
my internetowe przeksztaciy si. Musiay zmieni podejcie biznesowe, podda technologie
ponownej ocenie i wzi pod uwag sposób, w jaki uytkownicy korzystaj z internetu. W poowie
dekady ujawniy si kluczowe trendy. Pojawio si okrelenie Web 2.0, pozwalajce oddzieli
nowe witryny od witryn, które zdobyy popularno pod koniec lat 90. Okrelenie to byo
mao precyzyjne i na pierwszy rzut oka wydawao si podejrzanie efekciarskie. Jednak rónice
midzy nowymi i starymi witrynami s rzeczywiste. Nie chodzi tylko o zaszoci historyczne czy
zmiany wynikajce z upywu czasu. Witryny takie jak Google, YouTube czy Flickr zademonstro-
way nowe podejcie do biznesu internetowego. Miay one czsto proste interfejsy, w peni
rozwinite usugi internetowe i daway uytkownikowi duo swobody. Wiele z nich bazowao na
zawartoci dostarczanej przez uytkowników. We wrzeniu 2005 roku wydawca ksiek tech-
nicznych Tim O’Reilly napisa artyku zatytuowany Czym jest Web 2.0, w którym zwile opisa
cechy odróniajce witryny Web 2.0 od witryn poprzedniej generacji. Uwzgldni w swoim
wykazie dwie cechy, które bezporednio wpyny na rozwój stron mashup:
Q
znaczenie danych,
Q
spoeczno uytkowników.
Znaczenie danych
Pierwsz cech jest znaczenie danych. Kwestia tego, kto jest wacicielem danych i co zamierza
z nimi zrobi , staa si powanym problemem. Dlaczego firmy miayby inwestowa miliony
dolarów, eby gromadzi dane w systemach bazodanowych, a nastpnie za darmo udostpnia
je innym? Dlatego, e dziki temu twórcy stron agregujcych uatwiaj dotarcie do wacicieli
danych.
eby to pokaza , O’Reilly posuy si przykadem firmy MapQuest, która bya liderem na rynku
map w drugiej poowie lat 90. Jednak jej system by zamknity i nie umoliwia zewntrznym
uytkownikom wykorzystywania jej danych. W pierwszych latach XXI wieku strony z mapami
zaczy walczy z tymi sabociami. Na rynek weszy Yahoo! Maps, Microsoft Virtual Earth
i Google Maps, udostpniajc interfejsy API. Pomimo ogromnego udziau w rynku, MapQuest
szybko zacz traci przewag na rzecz firm udostpniajcych dane. Jest wiele podobnych przy-
kadów. Amazon udostpni dane poprzez Amazon E-Commerce Service (ECS). Wiele witryn
agregujcych wykorzystao t usug do stworzenia wasnych sklepów. Amazon organizuje
PHP Web 2.0. Tworzenie aplikacji typu mashup
20
sprzeda, pacc prowizj twórcom i wacicielom witryn mashup. Dziki temu firma urucho-
mia nowe kanay sprzeday produktów, cho oczywicie www.amazon.com nadal dziaa. Z kolei
firma BarnesAndNoble.com nie udostpnia swoich danych. Jedynym kanaem ich sprzeday jest
gówna witryna. Spowodowao to nie tylko utrat moliwoci sprzeday, ale równie mniejsz
lojalno uytkowników ni w przypadku Amazon.
We wczeniejszych przykadach przedstawilimy witryn Wii Seeker, która pomagaa sprze-
dawcom poprzez kierowanie nabywców do sklepów. W zamian za to pobierana jest opata za
reklam i czonkostwo. Google Videos, Google News i Digg.com zdobywaj uytkowników, kiedy
kto kliknie cze na witrynie Astrolicious.us. Z kolei Astrolicious.us otrzymuje opat za reklamy,
wkadajc niewielki wysiek w ich stworzenie.
Spoecznoci uytkowników
Drug cech jest to, e dane wprowadzone przez uytkowników s o wiele cenniejsze, ni dotd
sdzilimy. Recenzje produktów pisane przez uytkowników na stronach komercyjnych nie s
jak nowoci. Nie s ni równie fora internetowe. Jednak wane stao si to, w jaki sposób
witryny korzystaj z tych informacji i kto jest ich wacicielem. Witryna wypoyczajca filmy,
Netflix, od zawsze umoliwiaa uytkownikom ocenianie filmów, które ogldali. Na podstawie
tych ocen Netflix sugeruje inne filmy, które mogyby si im podoba . Niedawno dodano now
funkcjonalno spoecznociow o nazwie „Przyjaciele”, która umoliwia obejrzenie ocen przy-
znanych filmom przez Twoich przyjació oraz zdobycie informacji o tym, jakie filmy ogldaj.
Jedn z opcji jest ocena podobiestwa. Dziki porównaniu Twoich rekomendacji z rekomen-
dacjami przyjació Netflix wylicza procentowy wskanik zgodnoci gustów.
Niektóre witryny s cakowicie zalene od danych uytkowników. YouTube i Flickr udostpniaj
za darmo miejsce na filmy i zdjcia. Ich popularno nie wzia si jednak po prostu z tego, e
usugi s darmowe. Nie ma w tym niczego nowego. Rónica ponownie polegaa na tym, co obie
witryny robi z danymi dodawanymi przez uytkowników. Obie udostpniaj funkcjonalnoci
spoecznociowe. Moesz oceni i skomentowa zdjcia i filmy innych uytkowników, a take
ledzi zmiany w ich profilach. Za kadym razem, kiedy kto doda jakie dane, zostaniesz o tym
poinformowany. Obydwie witryny umoliwiaj take swobodne oznaczanie treci, dziki czemu
uytkownik moe opisa dodany element za pomoc wasnych sów kluczowych. Odwiedzajcy
mog uy tych sów podczas wyszukiwania zawartoci. Oznaczanie treci okazao si dosko-
na pomoc przy tworzeniu algorytmów wyszukiwania.
Te dwie cechy nowych witryn umoliwiaj maym firmom internetowym sprawianie wraenia,
e s o wiele wiksze. Korzystajc z danych udostpnianych przez wiksze firmy, twórcy witryn
agregujcych znajduj zastosowania, o których nie pomyleliby waciciele danych lub których
nie mogliby wprowadzi z powodu ogranicze biznesowych.
Rozdzia 1. • Wprowadzenie do aplikacji typu mashup
21
Jak bdziemy tworzy aplikacje
typu mashup
Z technologicznego punktu widzenia zjawisko agregacji danych nie narodzioby si, gdyby waci-
ciele witryn internetowych nie oddzielili wyranie danych, które s wykorzystywane na witry-
nach, od waciwej ich prezentacji. To zawsze byo celem podczas tworzenia aplikacji inter-
netowych, dlatego te nie powinien dziwi kierunek rozwoju ich architektury. Dziki temu
podziaowi sie przeksztaca si w co, co jest znane jako semantyczna sie stron interneto-
wych — zawarto internetowa jest prezentowana nie tylko w celu czytania przez ludzi, ale
równie moe by atwo przetwarzana przez komputery. Przeszlimy od stron statycznych do
stron opartych na bazach danych, od prezentacyjnych znaczników
FONT
do kaskadowych arkuszy
stylów. Prawdopodobnie nieuniknione byo to, e internet stanie si rodowiskiem, w którym
rozwin si witryny mashup.
róda danych dla witryn agregujcych s zrónicowane. Czsto waciciele udostpniaj dane
poprzez oficjalne interfejsy API. Interfejsy te uywaj usug sieciowych, które korzystaj z wielu
protokoów. Innym powszechnie stosowanym ródem danych, które pomogo w rozwoju witryn
agregujcych, jest rodzina formatów RSS. Kiedy niedostpne s oficjalne metody, programici
bardzo kreatywnie poszukuj rozwiza umoliwiajcych pobieranie danych. Przetwarzanie
caych stron jest czsto stosowan metod. Bez wzgldu na metod, witryny agregujce korzy-
staj z rónych formatów danych i zasadniczo s do proste w tworzeniu. Mimo to ich twórcy
musz by elastyczni i dobrze zna uywane narzdzia.
Oprogramowanie o otwartym kodzie szczególnie dobrze zaspokaja potrzeby twórców witryn
agregujcych. Poczenie serwera Apache i jzyka PHP umoliwia szybkie tworzenie oprogra-
mowania. Dziki otwarciu kodu, programici bez przerwy i szybko dodaj nowe funkcjonal-
noci zapewniajce spójno z usugami internetowymi.
W tej ksice przedstawi, w jaki sposób korzysta z popularnych róde danych w PHP. Wik-
szo oficjalnych interfejsów API oparta jest na jednym z trzech protokoów internetowych —
XML-RPC, REST lub SOAP. Oczywicie przyjrzymy si tym protokoom. Interfejsy API i bez-
porednie rczne odwoywanie si do usug internetowych to nie jedyne sposoby pobierania
danych. Poka równie, jak korzysta z zewntrznych bibliotek w celu komunikacji z popu-
larnymi witrynami. Innym wanym ródem danych s kanay informacyjne. Poznanie szerokiego
zestawu narzdzi wykorzystywanych do tworzenia stron agregujcych pozwoli Ci na szybkie
rozpoczcie pracy nad wasn witryn.
PHP Web 2.0. Tworzenie aplikacji typu mashup
22
Wicej aplikacji typu mashup
Poniej znajduj si przykady aplikacji typu mashup, z których mona czerpa inspiracj:
Q
Popurls (popurls.com) — kolekcja adresów URL z popularnych witryn,
Q
Housingmaps.com (www.housingmaps.com) — wywietla na mapie pozycje domów
z witryny Craiglist,
Q
Keggy (us.keggy.com) — witryna agregujca wiadomoci z rónych róde
i personalizujca j pod ktem okrelonego czytelnika,
Q
Alkemis (local.alkemis.com) — agreguje i umieszcza na mapie wszystkie rodzaje
danych, na przykad zdjcia i obrazy z kamer w wybranych miastach,
Q
Gametripping.com (www.gametripping.com) — kolekcja zdj satelitarnych i zdj
z serwisu Flickr ze stadionami baseballowymi.