Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00565 008487 10489523 na godz. na dobę w sumie
PHP5. Zaawansowane programowanie - książka
PHP5. Zaawansowane programowanie - książka
Autor: , , , Liczba stron: 664
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-825-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).

PHP to język umożliwiający tworzenie aplikacji sieciowych uruchamianych po stronie serwera. Jego najnowsza wersja, oznaczona numerem 5, to w pełni obiektowy język, za pomocą którego można budować nawet najbardziej złożone systemy portalowe, intranetowe i ekstranetowe. Dzięki nowym funkcjom wprowadzonym w PHP 5 możliwe jest korzystanie z plików XML i protokołu SOAP, wydajna komunikacja z bazą danych i stosowanie technik obiektowych znacznie ułatwiających i przyspieszających tworzenie rozbudowanych aplikacji.

'PHP5. Zaawansowane programowanie' to książka przedstawiająca potężne możliwości i elastyczność najnowszej wersji tej popularnej platformy programistycznej. Opisuje podstawowe zasady programowania obiektowego i prowadzenia rozbudowanych projektów informatycznych. Zawiera informacje o modelowaniu aplikacji w języku UML, stosowaniu wzorców projektowych i tworzeniu narzędzi, które będzie można wykorzystać w każdym projekcie. Przedstawia również analizę prawdziwego przypadku -- systemu automatyzującego pracę działu sprzedaży w przedsiębiorstwie handlowym.

Jeśli chcesz poznać zaawansowane możliwości PHP 5, sięgnij po tę książkę.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl PHP5. Zaawansowane programowanie Autorzy: Edward Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove T³umaczenie: Adam Byrtek, Jaros³aw Dobrzañski, Pawe³ Gonera ISBN: 83-7361-825-2 Tytu³ orygina³u: Professional PHP5 Format: B5, stron: 664 PHP to jêzyk umo¿liwiaj¹cy tworzenie aplikacji sieciowych uruchamianych po stronie serwera. Jego najnowsza wersja, oznaczona numerem 5, to w pe³ni obiektowy jêzyk, za pomoc¹ którego mo¿na budowaæ nawet najbardziej z³o¿one systemy portalowe, intranetowe i ekstranetowe. Dziêki nowym funkcjom wprowadzonym w PHP 5 mo¿liwe jest korzystanie z plików XML i protoko³u SOAP, wydajna komunikacja z baz¹ danych i stosowanie technik obiektowych znacznie u³atwiaj¹cych i przyspieszaj¹cych tworzenie rozbudowanych aplikacji. „PHP5. Zaawansowane programowanie” to ksi¹¿ka przedstawiaj¹ca potê¿ne mo¿liwoġci i elastycznoġæ najnowszej wersji tej popularnej platformy programistycznej. Opisuje podstawowe zasady programowania obiektowego i prowadzenia rozbudowanych projektów informatycznych. Zawiera informacje o modelowaniu aplikacji w jêzyku UML, stosowaniu wzorców projektowych i tworzeniu narzêdzi, które bêdzie mo¿na wykorzystaæ w ka¿dym projekcie. Przedstawia równie¿ analizê prawdziwego przypadku — systemu automatyzuj¹cego pracê dzia³u sprzeda¿y w przedsiêbiorstwie handlowym. • Programowanie obiektowe • Jêzyk UML i modelowanie systemów • Wzorce projektowe • Tworzenie prostych narzêdzi obiektowych • Po³¹czenia z bazami danych • Model MVC • Stosowanie protoko³u SOAP • Komunikacja z u¿ytkownikiem i mechanizmy sesji • Testowanie aplikacji • Studium przypadku — automatyzacja pracy dzia³u sprzeda¿y Jeġli chcesz poznaæ zaawansowane mo¿liwoġci PHP 5, siêgnij po t¹ ksi¹¿kê Spis treści O Autorach ........................................h...................................................h..................................................... 13 Wstęp ...................................................h...................................................h................................................. 15 Część I Technologia obiektowa 21 Rozdział 1. Wprowadzenie do programowania obiektowego ...................................................h.............23 Czym jest programowanie obiektowe? ...................................................p.......................23 Zalety programowania obiektowego ...................................................p......................24 Przykład z życia ...................................................p..................................................25 Pojęcia związane z programowaniem obiektowym ...................................................p........25 Klasy ...................................................p...................................................p.............26 Obiekty ...................................................p...................................................p..........27 Dziedziczenie ...................................................p...................................................p..36 Interfejsy ...................................................p...................................................p........45 Hermetyzacja ...................................................p...................................................p..48 Zmiany w PHP5 dotyczące programowania obiektowego ..................................................49 Podsumowanie ...................................................p...................................................p....50 Rozdział 2. Unified Modeling Language (UML) ...................................................h..................................... 51 Zbieranie wymagań ...................................................p..................................................51 Rozmowa z klientem ...................................................p...........................................52 Diagramy przypadków użycia ...................................................p................................53 Diagramy klas ...................................................p...................................................p......54 Modelowanie dziedziny ...................................................p.......................................55 Relacje ...................................................p...................................................p..........56 Implementacja ...................................................p...................................................p58 Diagramy aktywności ...................................................p...............................................61 Diagramy przebiegu ...................................................p.................................................63 Diagramy stanów ..................................................p...................................................p...65 Diagram komponentów i instalacji ...................................................p.............................66 Podsumowanie ...................................................p...................................................p....67 4 PHP5. Zaawansowane programowanie Rozdział 3. Obiekty zaczynają działać ...................................................h.................................................69 Tworzenie menedżera kontaktów ...................................................p...............................69 Diagramy UML dla menedżera kontaktów ...................................................p..............70 Klasa PropertyObject ...................................................p..........................................74 Klasy z informacjami kontaktowymi ...................................................p......................76 Klasa DataManager ...................................................p............................................80 Klasy Entity, Individual i Organization ..................................................p.....................81 Użycie systemu ...................................................p..................................................88 Podsumowanie ...................................................p...................................................p....90 Rozdział 4. Wzorce projektowe ...................................................h........................................................... 91 Wzorzec złożony ...................................................p...................................................p...92 Implementacja ...................................................p...................................................p93 Przemyślenia ...................................................p...................................................p..97 Wzorzec obserwatora ...................................................p...............................................98 Widget ...................................................p...................................................p...........98 Przemyślenia ...................................................p...................................................p 104 Wzorzec dekoratora ...................................................p............................................... 104 Implementacja ...................................................p................................................. 106 Korzystanie z dekoratora ...................................................p................................... 107 Przemyślenia ...................................................p...................................................p 108 Wzorzec fasady ...................................................p...................................................p.. 109 Wzorzec budowniczego ..................................................p............................................ 111 Implementacja ...................................................p................................................. 111 Przemyślenia ...................................................p...................................................p 115 Podsumowanie ...................................................p...................................................p.. 115 Część II Tworzenie obiektowego zestawu narzędziowego. Proste klasy i interfejsy 117 Rozdział 5. Klasa Collection ...................................................h...................................................h.....................119 Założenia klasy Collection ...................................................p.......................................... 119 Projektowanie klasy Collection ...................................................p.................................... 120 Fundamenty klasy Collection ...................................................p...................................... 121 Metoda addItem ...................................................p...................................................p 122 Metody getItem i removeItem ...................................................p................................ 123 Pozostałe metody ...................................................p................................................. 123 Użycie klasy Collection ..................................................p........................................... 124 Implementacja leniwej konkretyzacji ...................................................p........................... 125 Funkcje zwrotne ...................................................p...................................................p 126 Metoda setLoadCallback w klasie Collection ...................................................p.......... 130 Wykorzystanie klasy Collection ...................................................p................................... 133 Ulepszanie klasy Collection ...................................................p........................................ 139 Podsumowanie ...................................................p...................................................p....... 139 Rozdział 6. Klasa CollectionIterator ...................................................h...................................................h.......141 Interfejs Iterator ...................................................p...................................................p......141 Klasa CollectionIterator ...................................................p........................................ 143 Interfejs IteratorAggregate ...................................................p.......................................... 144 Ochrona zawartości iteratora ...................................................p...................................... 146 Podsumowanie ...................................................p...................................................p....... 147 Spis treści 5 Rozdział 7. Klasa GenericObject ...................................................h...................................................h............149 Klasa GenericObject ...................................................p.................................................. 149 Kiedy korzystać z GenericObject? ...................................................p.......................... 150 Na co pozwala GenericObject? ...................................................p.............................. 150 Decyzje w sprawie implementacji ...................................................p.......................... 151 Typowa implementacja GenericObject ...................................................p.................... 152 Poznawanie rodzica ...................................................p.............................................. 154 Współpraca z bazą danych ...................................................p.................................... 157 Metody i własności GenericObject ...................................................p......................... 159 Zalety klasy GenericObject ...................................................p.................................... 161 Klasa GenericObjectCollection ...................................................p.................................... 162 Tradycyjna implementacja ...................................................p..................................... 163 Kiedy tradycyjna implementacja zawodzi ...................................................p................ 163 Działanie klasy GenericObjectCollection ...................................................p................. 164 Kod klasy ...................................................p...................................................p.......... 165 Typowa implementacja GenericObjectCollection ...................................................p..... 167 Próba ...................................................p...................................................p................ 168 Jak to działa? ...................................................p...................................................p.... 168 Podsumowanie klasy GenericObjectCollection ...................................................p........ 170 Podsumowanie ...................................................p...................................................p....... 171 Rozdział 8. Warstwa abstrakcji dla bazy danych ...................................................h.................................173 Czym jest warstwa abstrakcji? ...................................................p.................................... 174 Prosta implementacja ...................................................p................................................ 174 Plik konfiguracyjny ...................................................p................................................ 174 Nawiązywanie połączenia ...................................................p...................................... 175 Pobieranie danych ...................................................p................................................ 175 Modyfikacja danych ...................................................p.............................................. 176 Korzystanie z klasy Database ...................................................p................................ 178 Wprowadzenie do PEAR DB ...................................................p........................................ 180 Nawiązywanie połączenia za pomocą DB ...................................................p............... 181 Pobieranie danych ...................................................p................................................ 182 Inne użyteczne funkcje ...................................................p.......................................... 183 Więcej informacji ...................................................p.................................................. 186 Gotowa warstwa abstrakcji ...................................................p......................................... 186 Obsługa transakcji ...................................................p................................................ 189 Wzorzec projektowy Singleton ...................................................p............................... 191 Podsumowanie ...................................................p...................................................p....... 193 Rozdział 9. Interfejs fabryki ...................................................h.....................................................................195 Wzorzec fabryki ...................................................p...................................................p....... 195 Przykład interfejsu fabryki ...................................................p........................................... 196 Rozwiązanie staromodne ...................................................p...................................... 196 Wykorzystanie interfejsu fabryki ...................................................p............................ 197 Zastosowanie wzorca w abstrakcji bazy danych ...................................................p...... 198 Większa liczba fabryk ...................................................p................................................. 200 Wykorzystanie klas istniejących ...................................................p.................................. 201 Podsumowanie ...................................................p...................................................p....... 201 6 PHP5. Zaawansowane programowanie Rozdział 10. Programowanie oparte na zdarzeniach ...................................................h..........................203 Czym są zdarzenia? ...................................................p...................................................p 204 Obiektowa obsługa zdarzeń ...................................................p........................................ 205 Projekt rozwiązania ...................................................p............................................... 205 Implementacja rozwiązania ...................................................p................................... 207 Implementacja zabezpieczeń ...................................................p................................. 211 Chwila zastanowienia ...................................................p........................................... 213 Podsumowanie ...................................................p...................................................p....... 214 Rozdział 11. Pliki dziennika i debugowanie ...................................................h..............................................215 Tworzenie mechanizmu logowania ...................................................p.............................. 215 Proste logowanie do pliku ...................................................p..................................... 215 Przykładowa struktura katalogów ...................................................p........................... 216 Klasa Logger ...................................................p...................................................p..... 217 Rozbudowa klasy Logger ...................................................p....................................... 221 Mechanizm debugowania ...................................................p........................................... 231 Podsumowanie ...................................................p...................................................p....... 234 Rozdział 12. SOAP ...................................................h...................................................h....................................235 SOAP i PHP5 ...................................................p...................................................p.......... 235 Rozszerzenie PHP5 SOAP ...................................................p..................................... 236 Klient SOAP ...................................................p...................................................p............ 239 Za kulisami ...................................................p...................................................p....... 241 Obsługa wyjątków w kliencie SOAP ...................................................p........................ 245 Serwer SOAP ...................................................p...................................................p.......... 246 Podsumowanie ...................................................p...................................................p....... 248 Część III Tworzenie zestawu narzędzi do wielokrotnego wykorzystania. Narzędzia złożone (choć nieskomplikowane) 249 Rozdział 13. Model, widok, kontroler (MVC) ...................................................h...........................................251 Wprowadzenie do MVC ...................................................p............................................... 252 Model ...................................................p...................................................p............... 253 Widok ...................................................p...................................................p............... 253 Kontroler ...................................................p...................................................p........... 253 Infrastruktura ...................................................p...................................................p.... 253 MVC w aplikacjach WWW ...................................................p...................................... 253 MVC w PHP ...................................................p...................................................p....... 254 Mały zestaw narzędzi MVC ...................................................p......................................... 256 Prezentacja zestawu narzędzi ...................................................p................................ 256 Korzystanie z zestawu narzędzi ...................................................p............................. 268 Zestaw narzędzi a praktyka ...................................................p................................... 275 Prawdziwe szablony ...................................................p...................................................p 275 Powtórka z szablonów macierzystych PHP ...................................................p.............. 275 Wady szablonów macierzystych ...................................................p............................. 276 Prawdziwe szablony a szablony pakietu Smarty ...................................................p...... 276 Instalowanie pakietu Smarty ...................................................p................................. 277 Korzystanie z pakietu Smarty ...................................................p................................ 278 Zaawansowane możliwości pakietu Smarty ...................................................p............ 283 Kiedy korzystać z pakietu Smarty, a kiedy z tradycyjnych szablonów? ......................... 285 Podsumowanie ...................................................p...................................................p....... 285 Spis treści 7 Rozdział 14. Komunikacja z użytkownikami ...................................................h...........................................287 Po co się komunikować? ...................................................p............................................ 287 Powody komunikowania się z użytkownikiem ...................................................p.......... 288 Myślenie wykraczające poza przeglądarkę WWW ...................................................p.... 290 Formy komunikacji ...................................................p...................................................p.. 291 Wszystkie formy komunikacji mają… ...................................................p..................... 291 Nie wszystkie formy komunikacji mają… ...................................................p................ 291 Co z adresatami? ...................................................p................................................. 291 Komunikacja jako hierarchia klas ..................................................p................................. 292 Klasa adresata — szybki sprawdzian z myślenia obiektowego ................................... 292 Klasa Communication ...................................................p........................................... 296 Wysyłanie wiadomości do użytkowników naszej witryny ...................................................p 298 Tworzenie wersji testowej ...................................................p..................................... 298 Wysyłanie wiadomości ...................................................p.......................................... 302 Zastosowanie szablonów przy wykorzystaniu pakietu Smarty ..................................... 307 Korzystanie z MIME ...................................................p.............................................. 309 Inne podklasy klasy Communication ...................................................p........................... 309 Wiadomości tekstowe SMS ...................................................p................................... 309 Faks ...................................................p...................................................p................. 310 Podsumowanie ...................................................p...................................................p....... 310 Rozdział 15. Sesje i uwierzytelnianie ...................................................h........................................................311 Wprowadzenie do sesji ...................................................p............................................... 312 Krótka powtórka z protokołu HTTP ...................................................p......................... 312 Definicja sesji ...................................................p...................................................p... 314 Ciągłość sesji ...................................................p...................................................p.... 314 Bezpieczeństwo sesji ..................................................p............................................. 317 Jak PHP implementuje sesje? ...................................................p..................................... 324 Podstawowy mechanizm sesji w PHP ...................................................p..................... 324 Ograniczenia podstawowego mechanizmu sesji w PHP .............................................. 326 Tworzenie klasy Authentication ...................................................p................................... 327 Połączenie zarządzania sesjami PHP z bazą danych .................................................. 327 Klasa UserSession ...................................................p............................................... 329 Schemat bazy danych ...................................................p........................................... 329 Kod — usersession.phpm ...................................................p.................................... 330 Kod — testowanie klasy UserSession ...................................................p................... 334 Jak to działa — klasa UserSession ...................................................p....................... 336 Co otrzymaliśmy? ...................................................p................................................. 339 Podsumowanie ...................................................p...................................................p....... 339 Rozdział 16. Szkielet do testowania modułów ...................................................h........................................341 Metodologia i terminologia ...................................................p......................................... 341 Projektowanie interfejsu klasy ...................................................p............................... 342 Tworzenie pakietu testowego dla klasy ...................................................p.................. 343 Pisanie implementacji naszej klasy ...................................................p....................... 344 Druga tura ..................................................p...................................................p.......... 345 Wprowadzenie do PHPUnit ..................................................p........................................... 345 Instalacja PHPUnit ...................................................p................................................ 345 Korzystanie z PHPUnit ...................................................p................................................ 346 Przypadki testowania ...................................................p............................................ 346 Pakiet testujący ...................................................p...................................................p. 349 8 PHP5. Zaawansowane programowanie Czy warto? ...................................................p...................................................p.............. 349 Powtórne testy ...................................................p...................................................p.. 350 Użyteczność szkieletu ...................................................p........................................... 350 Demonstrowalny mechanizm zapewniania jakości ...................................................p.. 350 Redukcja obciążenia testami funkcjonalnymi ...................................................p......... 351 Praktyczny przykład ...................................................p...................................................p. 351 Podsumowanie ...................................................p...................................................p....... 356 Rozdział 17. Automat skończony i modyfikowalne pliki konfiguracyjne ...............................................357 Koncepcja automatu skończonego ...................................................p.............................. 358 Prosty AS — kalkulator ONP ...................................................p................................. 359 Teoretyczna implementacja AS ...................................................p.............................. 360 Implementacja automatów skończonych w PHP ...................................................p...... 361 Analiza przykładu z kalkulatorem ONP ...................................................p.................... 363 Przykłady automatów skończonych w praktyce ...................................................p........ 366 Modyfikowalne pliki konfiguracyjne ...................................................p............................. 367 Zastosowanie PHP ...................................................p............................................... 367 Zastosowanie XML-a ...................................................p............................................. 368 Korzystanie z plików INI ...................................................p........................................ 369 Klasa Config z PEAR ...................................................p............................................. 371 Zalecane praktyki związane z plikami konfiguracyjnymi .............................................. 372 Podsumowanie ...................................................p...................................................p....... 373 Część IV Studium przypadku — automatyzacja działu sprzedaży 375 Rozdział 18. Przegląd projektu ...................................................h................................................................377 Artykulandia ...................................................p...................................................p........... 378 Krajobraz Artykulandii ...................................................p................................................. 380 Wymiar techniczny ...................................................p................................................ 380 Wymiar finansowy ...................................................p................................................. 380 Wymiar polityczny ...................................................p................................................. 380 My ...................................................p...................................................p.................... 380 Czy rzeczywiście chodzi o technologię? ...................................................p.................. 381 Podejście do budowy oprogramowania ...................................................p........................ 381 Jakie konsekwencje ma to dla nas? ...................................................p...................... 383 Technologia ...................................................p...................................................p...... 384 Podsumowanie ...................................................p...................................................p....... 385 Rozdział 19. Metody zarządzania projektami ...................................................h........................................387 Wstępne rozeznanie ...................................................p...................................................p 387 Dlaczego realizujemy projekt? ...................................................p............................... 388 Dla kogo realizujemy projekt? ...................................................p................................ 388 Jaka jest historia projektu? ...................................................p................................... 390 Jakie są oczekiwane warunki wstępne projektu? ...................................................p.... 390 Odbieranie formalnych wytycznych ...................................................p.............................. 391 Wymogi obszaru działalności ...................................................p................................. 392 Zakres ...................................................p...................................................p.............. 393 Harmonogramy ...................................................p...................................................p.. 394 Budżet ...................................................p...................................................p.............. 395 Warunki handlowe ...................................................p................................................ 397 Plany na przyszłość ...................................................p.............................................. 398 Spis treści 9 Wygląd i obsługa ...................................................p.................................................. 398 Technologia ...................................................p...................................................p...... 398 Obsługa ...................................................p...................................................p............ 399 Co dalej? ...................................................p...................................................p.......... 399 Konstruowanie oferty ...................................................p................................................. 399 Konspekty kontra oferty cenowe ...................................................p............................ 399 Oferty w formie konspektu a specyfikacje ...................................................p.............. 400 Kogo zaangażować w tworzenie oferty? ...................................................p.................. 401 Kiedy można dać z siebie więcej? ...................................................p.......................... 401 Kiedy powiedzieć „nie”? ...................................................p....................................... 402 Struktura oferty ...................................................p...................................................p. 402 Wybieranie ludzi ...................................................p...................................................p...... 404 Menedżer projektu ...................................................p................................................ 404 Account manager ...................................................p................................................. 404 Główny architekt ...................................................p...................................................p 405 Architekci i inżynierowie oprogramowania ..................................................p................ 406 Programiści interfejsu klienckiego ...................................................p......................... 406 Starsi projektanci ...................................................p................................................. 406 Graficy ...................................................p...................................................p.............. 406 Podwójne role ...................................................p...................................................p... 407 Sposób pracy ...................................................p...................................................p.... 407 Rola klienta ..................................................p...................................................p........ 407 Podsumowanie ...................................................p...................................................p....... 408 Rozdział 20. Planowanie systemu ...................................................h...........................................................409 Wybór procesu ...................................................p...................................................p........ 409 Proces kaskadowy ...................................................p................................................ 409 Proces spiralny ...................................................p...................................................p.. 410 Wybór procesu ...................................................p...................................................p.. 412 Praktyki wspólne dla obydwu procesów ...................................................p....................... 412 Faza specyfikacji ...................................................p.................................................. 412 Faza projektowania ...................................................p............................................... 415 Faza budowy ...................................................p...................................................p..... 416 Faza testowania ...................................................p...................................................p 417 Odbiór ...................................................p...................................................p.............. 418 Metodyki i praktyki programowania ...................................................p............................. 418 Programowanie inicjowane testami ...................................................p........................ 418 Programowanie ekstremalne ...................................................p................................. 419 Zarządzanie zmianami ...................................................p................................................ 422 Rewizje specyfikacji ...................................................p.............................................. 422 Zmiany w specyfikacji, które pojawiają się po jej podpisaniu ...................................... 422 Dyskusje wynikające z różnych interpretacji ...................................................p............ 423 Błędy zgłoszone przez klienta ...................................................p................................ 423 Podsumowanie ...................................................p...................................................p....... 423 Rozdział 21. Architektura systemów ...................................................h......................................................425 Czym jest architektura systemu? ...................................................p................................ 425 Dlaczego to takie ważne? ...................................................p..................................... 426 Co musimy zrobić? ...................................................p............................................... 426 Efektywne tłumaczenie wymagań ...................................................p................................ 427 Hosting, łącza, serwery i sieć ...................................................p................................ 427 Nadmiarowość i elastyczność ...................................................p............................... 428 10 PHP5. Zaawansowane programowanie Utrzymanie ...................................................p...................................................p........ 428 Bezpieczeństwo ...................................................p...................................................p. 429 Projektowanie środowiska ...................................................p.......................................... 429 Hosting i łącza ...................................................p...................................................p.. 429 Obliczanie parametru CIR ...................................................p...................................... 430 Serwery ...................................................p...................................................p............ 432 Sieć ...................................................p...................................................p.................. 434 Zapis nadmiarowy ...................................................p................................................ 434 Utrzymanie ...................................................p...................................................p........ 435 Bezpieczeństwo ...................................................p...................................................p. 435 Podsumowanie ...................................................p...................................................p....... 436 Rozdział 22. Tworzenie aplikacji automatyzującej pracę zespołu sprzedaży ....................................437 Rozpoczynamy projekt — poniedziałek ...................................................p........................ 438 Zamieniamy się w słuch ...................................................p........................................ 438 Oszacowanie wagi scenariuszy ...................................................p.............................. 440 Planowanie wersji ...................................................p................................................. 447 Rozpoczynamy pracę ...................................................p.................................................. 448 Opis szczegółów scenariusza nr 9 ...................................................p......................... 448 Tworzenie testów ...................................................p.................................................. 449 PHPUnit ...................................................p...................................................p............ 450 Tworzenie ekranu logowania ...................................................p................................. 457 Następny scenariusz ...................................................p............................................ 460 Ponowne oszacowanie ...................................................p.......................................... 469 Porządki ...................................................p...................................................p................. 471 Refaktoring kodu ...................................................p.................................................. 472 Kończenie iteracji ...................................................p...................................................p... 478 Scenariusz nr 14. Zmiana tygodnia powoduje odczytanie poprzedniego ...................... 478 Scenariusz nr 15. Tygodniowe pola na raporcie wizyt klienta ...................................... 480 Raport kosztów podróży ...................................................p............................................. 487 Składnik kosztów podróży ...................................................p..................................... 489 Tygodniowe koszty podróży ...................................................p................................... 492 Narzut ...................................................p...................................................p............... 494 Kolejne testy tygodniowych kosztów podróży ...................................................p.......... 495 Wypełnianie testów tygodniowego arkusza kosztów podróży ....................................... 498 Zakończony raport kosztów podróży ...................................................p............................ 510 Obiekty fikcyjne ...................................................p...................................................p...... 522 Podsumowanie ...................................................p...................................................p....... 527 Rozdział 23. Zapewnienie jakości ...................................................h...........................................................529 Wprowadzenie do QA ...................................................p................................................. 529 Dlaczego warto się starać? ...................................................p................................... 530 Co to jest jakość? ...................................................p................................................ 531 Wymierna jakość ...................................................p.................................................. 532 Testowanie ...................................................p...................................................p............. 534 Testowanie modułów ...................................................p............................................ 535 Testowanie funkcjonalne ...................................................p...................................... 535 Testowanie obciążenia ..................................................p........................................... 537 Testowanie użyteczności ...................................................p....................................... 537 Śledzenie błędów ...................................................p...................................................p.... 538 Efektywne śledzenie błędów z wykorzystaniem systemu Mantis ................................. 539 Wykorzystanie wszystkich możliwości Mantis ...................................................p......... 546 Podsumowanie ...................................................p...................................................p....... 546 Spis treści 11 Rozdział 24. Instalacja ...................................................h...................................................h...........................549 Opracowywanie środowiska programistycznego ...................................................p........... 549 Firmowe środowisko rozwojowe ...................................................p............................. 550 Firmowe środowisko testowe ...................................................p................................ 551 Środowisko testowe klienta ...................................................p.................................. 551 Środowisko produkcyjne klienta ...................................................p............................ 552 Rozwojowe bazy danych ...................................................p........................................ 553 Organizacja wdrożenia ...................................................p................................................ 554 Automatyczne pobieranie z repozytorium kontroli wersji ............................................. 556 Zastosowanie rsync ...................................................p.............................................. 557 Synchronizacja serwerów za pomocą rsync ...................................................p............ 559 Podsumowanie ...................................................p...................................................p....... 561 Rozdział 25. Projektowanie i tworzenie solidnej platformy raportującej ..........................................563 Wprowadzenie do danych roboczych ..................................................p............................. 563 Poznajemy potrzeby klienta ...................................................p................................... 564 Zarządzanie żądaniami klientów ...................................................p............................ 564 Dostarczanie raportów ...................................................p.......................................... 566 Projektowanie raportu ...................................................p........................................... 566 Architektura generatora raportów ...................................................p................................ 569 Generowanie raportów w tle ...................................................p.................................. 571 Interfejs raportów ...................................................p................................................. 573 Interfejs nowego raportu ...................................................p....................................... 574 Skrypt procesora raportów ...................................................p.................................... 578 Proces ...................................................p...................................................p.............. 578 Skrypty obsługi raportów ...................................................p....................................... 579 Strona Moje raporty ...................................................p.............................................. 581 Skrypty tłumaczące ...................................................p............................................... 581 Przykład użycia platformy raportowej ...................................................p...................... 583 Wizualizacja ...................................................p...................................................p...... 584 Podsumowanie ...................................................p...................................................p....... 585 Rozdział 26. Co dalej? ...................................................h...................................................h............................587 Motywacja ...................................................p...................................................p.............. 587 Twoja kariera programisty ...................................................p........................................... 588 Więcej niż tylko programowanie WWW ...................................................p................... 588 Umiejętności miękkie ...................................................p........................................... 589 Umiejętności teoretyczne ...................................................p...................................... 589 Umiejętności społeczne ...................................................p........................................ 589 Podsumowanie ...................................................p...................................................p....... 590 Dodatki 591 Dodatek A Dlaczego warto korzystać z kontroli wersji ...................................................h......................593 Dodatek B IDE dla PHP ...................................................h...................................................h.............................607 Dodatek C Strojenie wydajności PHP ...................................................h.......................................................621 Dodatek D Najlepsze praktyki przy instalacji PHP ...................................................h...............................633 Skorowidz ...................................................h...................................................h....................................... 645 1 Wprowadzenie do programowania obiektowego Programowanie obiektowe może wprowadzać zamieszanie w głowach programistów two- rzących głównie kod proceduralny. Może, ale nie musi. W niniejszym rozdziale omówimy podstawowe zagadnienia teoretyczne związane z technologią obiektową i poznamy obo- wiązującą w tej dziedzinie terminologię (pełną odstraszających czasem wielosylabowców). Powiemy, dlaczego warto interesować się technikami obiektowymi i w jaki sposób mogą one znacznie przyspieszyć proces programowania rozbudowanych aplikacji oraz ułatwić ich późniejsze modyfikacje. W dwóch następnych rozdziałach będziemy poszerzać tę wiedzę i wgłębiać się w nieco bardziej zaawansowane tematy. Ci, którzy mają wcześniejsze doświadczenia z programowaniem obiek- towym poza środowiskiem PHP5, mogą te dwa rozdziały pominąć. Z drugiej strony, materiał ten może stanowić dobrą powtórkę, więc mimo wszystko zachęcamy do jego przeczytania. Czym jest programowanie obiektowe? Programowanie obiektowe wymaga innego sposobu myślenia przy tworzeniu aplikacji. Obiekty umożliwiają bliższe odwzorowanie za pomocą kodu, rzeczywistych zadań, procesów i idei, które mają realizować aplikacje. Zamiast traktować aplikację jako wątek sterowania, który przesyła dane pomiędzy funkcjami, modelujemy ją jako zbiór współpracujących z sobą obiek- tów, które niezależnie realizują pewne zadania. Analogią może być przykład budowy domu. Hydraulicy zajmują się instalacją wodną, a elek- trycy instalacją elektryczną. Hydraulicy nie muszą wiedzieć, czy obwód w sypialni jest 10-amperowy czy 20-amperowy. Interesuje ich tylko to, co ma jakiś związek z instalacją wodną. Generalny wykonawca dopilnowuje tego, by każdy z podwykonawców zrobił to, co do niego należy, ale przeważnie nie interesują go szczegóły każdego pojedynczego zadania. 24 Część I n Technologia obiektowa Podejście obiektowe jest podobne w tym sensie, że obiekty ukrywają przed sobą szczegóły swojej implementacji. Sposób wykonania zadania nie jest istotny dla innych komponentów systemu. Liczy się to, jakie usługi obiekt może wykonać. Pojęcia klas i obiektów oraz sposoby korzystania z nich przy pisaniu programów to funda- mentalne zagadnienia programowania obiektowego. Są one w pewnym sensie sprzeczne z zasadami programowania proceduralnego, czyli programowania korzystającego z funkcji i globalnych struktur danych. Jak zobaczymy, podejście obiektowe ma kilka ogromnych zalet w porównaniu z proceduralnym, a nowa implementacja możliwości programowania obiektowego w PHP5 przynosi również znaczne korzyści w wydajności. Zalety programowania obiektowego Jedną z głównych zalet programowania obiektowego jest łatwość przekładania poszczegól- nych wymogów z obszaru zastosowania na poszczególne moduły kodu. Ponieważ podejście obiektowe pozwala na modelowanie aplikacji na podstawie „obiektów” z otaczającej nas rzeczywistości, często możliwe jest odnalezienie bezpośredniego przełożenia ludzi, rzeczy i pojęć na odpowiadające im klasy. Klasy te charakteryzują się takimi samymi właściwościa- mi i zachowaniami jak rzeczywiste pojęcia, które reprezentują, co pomaga w szybkim ustale- niu, jaki kod trzeba napisać i w jaki sposób zachodzić ma interakcja pomiędzy poszczegól- nymi częściami aplikacji. Drugą zaletą programowania obiektowego jest możliwość wielokrotnego wykorzystania kodu. Często potrzebujemy tych samych typów danych w różnych miejscach tej samej aplikacji. Na przykład w aplikacji, która umożliwia szpitalowi zarządzanie kartami swoich pacjentów, z pewnością potrzebna będzie klasa 2GTUQP (osoba). W systemie opieki szpitalnej występuje wiele różnych osób — pacjent, lekarze, pielęgniarki, członkowie administracji szpitala itp. Na każdym etapie zajmowania się pacjentem, wymagane jest odnotowanie w jego karcie osoby, która wykonała daną czynność (np. przepisała lek, oczyściła ranę lub wystawiła rachunek za opiekę medyczną), i zweryfikowanie, czy osoba jest do tej czynności uprawniona. Definiując ogólną klasę 2GTUQP, która obejmuje wszystkie właściwości i metody wspólne dla wszystkich ludzi, otrzymujemy możliwość wykorzystania tego fragmentu kodu na naprawdę olbrzymią skalę, co nie zawsze jest możliwe przy proceduralnym podejściu do programowania. A co z innymi zastosowaniami? Czy możemy wyobrazić sobie inne aplikacje, które przetwa- rzają informacje o osobach? Prawdopodobnie tak i to niemało. Dobrze napisana klasa 2GTUQP mogłaby być przenoszona z jednego projektu do drugiego z minimalnymi zmianami lub wręcz bez zmian, udostępniając od ręki duże możliwości funkcjonalne stworzone przy okazji wcze- śniejszych prac. Możliwość wielokrotnego wykorzystania kodu zarówno w obrębie jednej aplikacji, jak i od projektu do projektu, to jedna z większych zalet podejścia obiektowego. Inna zaleta programowania obiektowego wynika z modularności klas. Jeżeli odkryjemy błąd w klasie 2GTUQP albo będziemy chcieli zmienić sposób jej działania czy też rozbudować ją, to wszelkich zmian dokonujemy tylko w jednym miejscu. Wszystkie cechy funkcjonalne klasy znajdują się w jednym pliku. Dokonane zmiany od razu odzwierciedlają się we wszyst- kich procesach aplikacji, które bezpośrednio opierają się na klasie 2GTUQP. Znacznie uprasz- cza to szukanie błędów i czyni rozbudowę klasy zabiegiem w miarę bezbolesnym. Rozdział 1. n Wprowadzenie do programowania obiektowego 25 Przykład z życia Korzyści wynikające z modularności mogą wydawać się niewielkie w przypadku prostych aplikacji, ale podczas wykorzystywania złożonych architektur oprogramowania bywają po- tężne. Jeden z autorów książki pracował ostatnio nad projektem obejmujących 200 tysięcy wierszy proceduralnego kodu PHP. Co najmniej 65 czasu poświęconego na poprawianie błędów zmarnowano na wyszukiwanie pewnych funkcji i sprawdzanie, jakie funkcje korzy- stają z jakich danych. Później stworzono nową wersję tego oprogramowania, tym razem o architekturze obiektowej, która okazała się składać z o wiele mniejszej ilości kodu. Gdyby aplikacja od początku była pisana w taki sposób, to nie tylko trwałoby to krócej, ale uniknięto by wielu błędów (im mniejsza ilość kodu, tym mniejsza ilość błędów), a proces ich usuwa- nia byłby znacznie szybszy. Jako że podejście obiektowe zmusza do zastanowienia się nad organizacją kodu, poznawa- nie struktury istniejącej aplikacji jest o wiele łatwiejsze, kiedy dołączamy jako „nowy” do zespołu programistów. Poza tym dysponujemy wówczas szkieletem pomocnym w ustalaniu, gdzie powinny znaleźć się nowo dodawane cechy funkcjonalne. Nad większymi projektami często pracują wieloosobowe zespoły programistów o różnych umiejętnościach. Tutaj również podejście obiektowe ma znaczną przewagę nad procedural- nym. Obiekty ukrywają szczegóły implementacyjne przed swoimi użytkownikami. Zamiast konieczności zrozumienia złożonych struktur danych i pokrętnej logiki rządzącej obszarem zastosowania aplikacji mniej doświadczeni członkowie zespołu mogą na podstawie skromnej dokumentacji zacząć używać obiektów stworzonych przez bardziej doświadczonych progra- mistów. Same obiekty są odpowiedzialne za dokonywanie zmian w danych oraz zmian stanu systemu. Kiedy wcześniej wspomniana aplikacja wciąż jeszcze była pisana kodem proceduralnym, nowi programiści w zespole często musieli poświęcić do dwóch miesięcy na naukę szcze- gółów związanych z aplikacją, zanim stali się produktywni. Po przerobieniu aplikacji na obiektową nowi członkowie zespołu mogli już po kilku dniach tworzyć obszerne dodatki do istniejącej bazy kodu. Byli w stanie szybko nauczyć się korzystać nawet z najbardziej skomplikowanych obiektów, ponieważ nie musieli w pełni rozumieć wszystkich szczegółów implementacji reprezentowanych przez nie cech funkcjonalnych. Teraz, gdy już wiemy, dlaczego należy rozważyć zastosowanie paradygmatu obiektowego jako metody programowania, powinniśmy przeczytać kilka następnych podrozdziałów, aby lepiej zrozumieć koncepcje leżące u podstaw obiektowości. Potem, już w trakcie lektury dwóch kolejnych rozdziałów, powinniśmy na własnej skórze odczuć zalety tego podejścia. Pojęcia związane z programowaniem obiektowym W niniejszym podrozdziale wprowadzimy podstawowe pojęcia ze świata programowania obiektowego i poznamy zależności miedzy nimi. W rozdziale 3., „Obiekty zaczynają dzia- łać”, omówiono specyfikę implementacji tych pojęć w PHP5. Poznamy tu między innymi: 26 Część I n Technologia obiektowa n Klasy — „wzorce” dla obiektów i kod definiujący właściwości i metody. n Obiekty — stworzone egzemplarze klasy, które przechowują wszelkie wewnętrzne dane i informacje o stanie potrzebne dla funkcjonowania aplikacji. n Dziedziczenie — możliwość definiowania klas jednego rodzaju jako szczególnego przypadku (podtypu) klasy innego rodzaju (na podobnej zasadzie jak kwadrat określany jest jako szczególny przypadek prostokąta). n Polimorfizm — umożliwia zdefiniowanie klasy jako członka więcej niż jednej kategorii klas (tak jak samochód, który jest „czymś, co ma silnik” oraz „czymś, co ma koła”). n Interfejsy — stanowią „umowę” na podstawie której obiekt może implementować metodę, nie definiując rzeczywistego sposobu implementacji. n Hermetyzacja — możliwość zastrzeżenia dostępu do wewnętrznych danych obiektu. Nie należy się przejmować, jeżeli któryś z tych terminów wydaje się trudny do zrozumienia. Wszystkie zostaną wyjaśnione dalej. Nowo zdobyta wiedza może całkowicie zmienić nasze podejście do realizacji przedsięwzięć programistycznych. Klasy W otaczającej nas rzeczywistości obiekty mają pewną charakterystykę i zachowania. Samo- chód ma kolor, wagę, markę oraz bak paliwowy o pewnej pojemności. To jest jego charakte- rystyka. Samochód może przyspieszać, zatrzymać się, sygnalizować skręt lub trąbić klakso- nem. To są jego zachowania. Te cechy i zachowania są wspólne dla wszystkich samochodów. Co prawda różne samochody mają różne kolory, ale każdy samochód ma jakiś kolor. W pro- gramowaniu obiektowym klasa umożliwia ustanowienie pojęcia samochodu jako czegoś posiadającego wszystkie cechy uznane za wspólne. Klasa to zamknięty fragment kodu zło- żony ze zmiennych i funkcji, które opisują cechy oraz zachowania wspólne dla wszystkich elementów pewnego zbioru. Klasa o nazwie CT (samochód) opisywałaby właściwości i me- tody wspólne dla wszystkich samochodów. W terminologii obiektowej charakterystyki klasy określa się mianem właściwości. Właści- wości mają nazwę i wartość. Wartości niektórych można zmieniać, a innych nie. Na przykład w klasie CT wystąpiłyby zapewne takie właściwości jak EQNQT (kolor) czy YGKIVJ (waga). Kolor samochodu może ulec zmianie po lakierowaniu, ale waga samochodu (bez pasażerów i bagażu) jest wartością stałą. Niektóre właściwości reprezentują stan obiektu. Stan odnosi się do tych charakterystyk, które ulegają zmianie w efekcie pewnych zdarzeń, a niekoniecznie można je modyfikować bezpośrednio. W aplikacji, która symuluje funkcjonowanie samochodu, klasa CT może mieć właściwość XGNQEKV[ (prędkość). Prędkość nie jest wartością, którą można zmienić tak po prostu, lecz końcowym efektem ilości paliwa przesłanej do silnika, osiągów tego silnika oraz terenu, po jakim porusza się samochód. Zachowania klas są określane mianem metod. Metody klas są składniowymi odpowiednika- mi funkcji z tradycyjnych programów proceduralnych. Podobnie jak funkcje, metody mogą pobierać dowolną ilość parametrów, z których każdy jest pewnego dopuszczalnego typu. Rozdział 1. n Wprowadzenie do programowania obiektowego 27 Niektóre metody przetwarzają zewnętrzne dane, przesłane jako parametry, ale mogą również działać na właściwościach własnych obiektów, odczytując ich wartości na potrzeby wyko- nywanych działań (na przykład metoda CEEGNGTCVG, która symuluje naciśnięcie pedału gazu, może sprawdzać ilość pozostałego paliwa, by ustalić, czy przyspieszenie jest
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PHP5. Zaawansowane programowanie
Autor:
, , ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: