Larry Ullman Zaawansowane tworzenie stron W W W Przystępny kurs zaawansowanych technik programistycznych w języku PHP ■ Programowanie obiektowe ■ Komunikacja z bazami danych ■ Korzystanie z technologii Ajax Helion Tytuł oryginału: PHP 5 Advanced Visual QuickPro Guide, First Edition Tłumaczenie: Radosław Meryk ISBN: 978-83-246-1171-3 Authorized translation from the English language edition, entitled: PHP 5 Advanced Visual QuickPro Guide, First Edition, ISBN 0321376013, by Larry Ullman, published by Pearson Education, Inc, publishing as Peachpit Press, Copyright © 2007 by Larry Ullman. Polish language edition published by Helion S.A. Copyright © 2008. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education Inc. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki lc, 44-100 GLIWICE tel. 032 231 22 19, 032 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opiniePphp5ss Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. Pamięci Billa Horowitza i Dorothy Negrino, którzy uwielbiali się uczyć. Podziękowania Chcielibyśmy złożyć serdeczne podziękowania naszemu redaktorowi Nancy Davis. Dzięki jej „oku eksperta” i oddaniu nasza praca stawała się lżejsza, a książka lepsza. Dziękujemy również Tracey Croom za jej wspaniałą pracę. Serdeczne podziękowania należą się także Danielle Foster, która zajmując się składem książki, pracowała pod niezwykłą presją czasu, a ze swojego zadania wywiązała się z zachowaniem wyjątkowego spokoju. Wdzięczni jesteśmy również za pomoc i udzielone wsparcie Nancy Reunzel z wydawnictwa Peachpit. Synowi Seanowi chcemy podziękować za zrozumienie dla zbzikowanych rodziców oraz za to, że chyba już zbyt wiele razy musiał sam przygotowywać sobie kolację. Nasze szczególne podziękowania chcielibyśmy złożyć w tym miejscu wszystkim nauczycielom uczelni wyższych i szkół średnich, którzy wykorzystywali poprzednie wydanie tej książki do nauczania prowadzonych przedmiotów. Dori chciałaby podziękować wspaniałym paniom z grupy W&S za niezwykłą uprzejmość i wirtualne serdeczności. Podziękowania należą się również społeczności Wise-Women Web Design (http://www.ioise-women.org) za okazaną cierpliwość, wsparcie oraz za inspirację. Podczas pisania Tom często czerpie swą energię z muzyki - niniejsza książka nie jest tu wyjątkiem. Jej nowe wydanie było inspirowane dużą ilością nieciekawej muzyki pop, której twórców już teraz trudno sobie przypomnieć, a także muzyką takich twórców jak Wolfgang Mozart, Patty Griffin, Richard Shindell, KT Tunstall, Bruce Springsteen, Rosanne Cash, REM, Antonio Vivaldi, Pandora Radio oraz funkcją losowego odtwarzania w serwisie iTunes. Spis treści Spis treści Wprowadzenie 9 Rozdział 1. Zaawansowane techniki programowania w PHP 17 Tablice wielowymiarowe .....................................................................................18 Definiowanie zaawansowanych funkcji ..............................................................34 Składnia heredoc ..................................................................................................47 Korzystanie z funkcji printf() i sprintf() ...............................................................53 Rozdział 2. Projektowanie aplikacji WWW 59 Dokumentowanie kodu ........................................................................................60 Styl i struktura kodu .............................................................................................63 Modularyzacja witryny WWW ............................................................................65 Operacje z buforem przeglądarki ........................................................................90 S p i s Rozdział 3. Zaawansowane zagadnienia dotyczące baz danych 97 t r e Zapisywanie danych sesji w bazie danych ..........................................................98 ś c Przetwarzanie kodów pocztowych ....................................................................112 i Tworzenie funkcji składowanych ......................................................................126 Wyświetlanie wyników w układzie poziomym .................................................132 Rozdział 4. Techniki zabezpieczania stron WWW 139 Podstawy .............................................................................................................140 Sprawdzanie poprawności danych przesyłanych za pomocą formularzy ...........142 Korzystanie z biblioteki Filter z repozytorium PECL .....................................152 Uwierzytelnianie z wykorzystaniem pakietu Auth z repozytorium PEAR .........159 Korzystanie z pakietu MCrypt ..........................................................................173 Rozdział 5. Techniki e-commerce 185 Pojęcia związane z dziedziną e-commerce .......................................................186 Tworzenie bazy danych .....................................................................................187 Tworzenie pliku konfiguracyjnego ....................................................................199 Tworzenie szablonu ...........................................................................................206 Tworzenie strony głównej .................................................................................213 Przeglądanie towarów według kategorii ...........................................................215 5 Spis treści Wyświetlanie informacji o produkcie ................................................................221 Implementacja koszyka na zakupy ....................................................................228 Sprawdzanie ważności karty kredytowej ..........................................................240 Rozdział 6. Podstawy programowania obiektowego 249 Teoria programowania obiektowego .................................................................250 Definiowanie klas ...............................................................................................251 Tworzenie obiektu .............................................................................................256 Atrybut $this .......................................................................................................260 Tworzenie konstruktorów ..................................................................................267 Tworzenie destruktorów ....................................................................................272 Automatyczne ładowanie klas ............................................................................276 Rozdział 7. Zaawansowane programowanie obiektowe 279 Zaawansowane teorie .........................................................................................280 Dziedziczenie klas .............................................................................................282 Dziedziczenie konstruktorów i destruktorów ...................................................287 Przesłanianie metod ...........................................................................................292 Kontrola dostępu ................................................................................................297 i c ś Stosowanie operatora zasięgu ............................................................................305 e tr Tworzenie składowych statycznych ..................................................................310 s i Klasy i metody abstrakcyjne ..............................................................................316 p S Rozdział 8. Praktyczne zastosowania technik obiektowych 325 Przechwytywanie wyjątków ...............................................................................326 Rozszerzanie klasy Exception ............................................................................333 Tworzenie klasy koszyka na zakupy ..................................................................344 Posługiwanie się klasą koszyka na zakupy ........................................................356 Rozdział 9. PHP w sieci 363 Dostęp do innych witryn WWW .......................................................................364 Obsługa gniazd ...................................................................................................371 Identyfikacja geograficzna adresu IP ................................................................379 Korzystanie z cURL ...........................................................................................384 Rozdział 10. PHP a serwer 389 Kompresowanie plików .....................................................................................390 PHP-GTK ...........................................................................................................401 Korzystanie z serwisu cron ................................................................................415 Planowanie zadań w systemie Windows ...........................................................418 Wykorzystanie modułu COM w PHP ...............................................................420 6 Spis treści Rozdział 11. PHP w wierszu polecenia 433 Testowanie instalacji ..........................................................................................434 Uruchamianie fragmentów kodu .......................................................................438 Tworzenie skryptu działającego w wierszu polecenia ......................................440 Uruchamianie skryptów działających w wierszu polecenia .............................444 Wykorzystanie argumentów wiersza polecenia ................................................448 Pobieranie danych wejściowych ........................................................................453 Rozdział 12. Korzystanie z PEAR 459 Korzystanie z pakietu Benchmark .....................................................................460 Korzystanie z klasy HTML_QuickForm ...........................................................472 Korzystanie z pakietu Mail_Mime ....................................................................485 Rozdział 13. Ajax 497 Wprowadzenie do Ajaksa ...................................................................................498 Prosty przykład ...................................................................................................500 Ajax w pełnej krasie ...........................................................................................522 Debugowanie aplikacji Ajax ..............................................................................539 Rozdział 14. XML i PHP 545 S p Czym jest XML? ................................................................................................546 is t Składnia XML ....................................................................................................548 r e ś Atrybuty, puste elementy i encje .......................................................................552 c i Definicje typu dokumentów ..............................................................................556 Parsowanie dokumentu XML ............................................................................564 Tworzenie kanałów RSS ....................................................................................578 Skorowidz 585 7 Wprowadzenie Czytelnikowi, który trzyma tę książkę w rękach, prawdopodobnie nie trzeba powtarzać, jak wspaniałym językiem jest PHP. Jeśli ktoś sięgnął po książkę dla zaawansowanych, prawdopodobnie używał wcześniej PHP do tworzenia dynamicznych witryn WWW — być może przez kilka lat, a może tylko kilka miesięcy. Jedni pewnie uczyli się sami, inni w szkole, a jeszcze inni przeczytali jedną z wielu dostępnych na rynku doskonałych książek na temat PHP (oczywiście nie mam na myśli tylko swoich). Tak czy owak, Czytelnik ma już jakieś doświadczenie, zatem prawdopodobnie nie chce po raz kolejny czytać frazesów w stylu „To jest PHP. Prawda, że świetne?”. Czytelnicy chcą raczej nauczyć się używać PHP bardziej wydajnie, bezpieczniej, szybciej i lepiej niż do tej pory. Jeśli tak jest, to jest właściwa książka. W opinii skromnego autora tej książki (lub może niezbyt skromnego) zaawansowane programowanie w PHP polega na: robieniu czegoś nowego w PHP, usprawnianiu prostych elementów oraz korzystaniu z technologii, które towarzyszą PHP. Krótko mówiąc, Czytelnik potrafi już stworzyć dynamiczną witrynę WWW za pomocą PHP, ale chce się dowiedzieć, w jaki sposób stworzyć lepszą — pod każdym względem — witrynę WWW. Pisząc tę książkę, przyjąłem takie właśnie podejście. Nie założyłem sobie, że będę rozsadzał mózgi Czytelników omawianiem ezoterycznych dziwactw języka, przepisywaniem kodu źródłowego PHP, MySQL lub Apache, czy też prezentowaniem teoretycznie poprawnego, ale w praktyce bezużytecznego kodu. Krótko mówiąc, na kilkuset stronach tej książki zamieściłem nieco „ponadprogramowe”, ale mimo to niezbędne (i często świetne) sztuczki i techniki. 0 książce Mówiąc najprościej, starałem się, aby treść tej książki była jak najbardziej przystępna 1 przydatna dla wszystkich programistów PHP. Jak wspomniałem we wstępnych akapitach, „zaawansowane” PHP to przede wszystkim rozszerzone spojrzenie na dotychczasowe tematy. Czytelnicy mają podstawową wiedzę — potrafią odczytać zapytanie do bazy danych — ale chcą pójść dalej. Może to oznaczać naukę programowania obiektowego (ang. Object-Oriented Programming — OOP), korzystania z repozytorium PEAR (ang. PHP Extension and Application Repository), zastosowania w witrynie technologii Ajax (ang. Asynchronous JavaScript and XML) lub konieczność rozwinięcia dotychczasowych umiejętności. Moja definicja zaawansowanego programowania w PHP obejmuje trzy luźno powiązane obszary: ♦ doskonalenie posiadanych umiejętności, by móc programować lepiej, szybciej i bezpieczniej, ♦ nauka bardziej zaawansowanych technik PHP, ♦ wykonywanie standardowych czynności za pomocą PHP i innych technologii (na przykład PEAR, Ajax lub technik obiektowych). Tę książkę można podzielić na trzy części odpowiadające wymienionym umiejętnościom. Pierwsze pięć rozdziałów poświęcono ogólnym zaawansowanym zagadnieniom dotyczącym PHP: technikom programistycznym, aplikacjom internetowym, bazom danych, bezpieczeństwu i aplikacjom e-commerce. Wszystkie te rozdziały zawierają informacje, które mogą być nieznane przeciętnemu programiście PHP, ale z których zrozumieniem nie powinno być problemu, jeśli zostaną zilustrowane odpowiednimi przykładami. Kolejne sześć rozdziałów koncentruje się na rozszerzeniu wiedzy Czytelników na te obszary PHP, które nie są powszechnie znane. Połowę tej części poświęcono szczegółowemu
Description: