E-book details

PHP. Wzorce projektowe

PHP. Wzorce projektowe

William Sanders

Ebook

Ciągły rozwój języka PHP sprawia, że za jego pomocą można już tworzyć bardzo zaawansowane aplikacje. Wszyscy programiści wiedzą, że wraz ze wzrostem skomplikowania tworzonego oprogramowania konieczne staje się zastosowanie sprawdzonych, przemyślanych i przetestowanych rozwiązań. Takim zbiorem najlepszych metod rozwiązywania typowych problemów są wzorce projektowe. Zawitały one również do świata PHP!

Na rynku znajdziesz wiele książek poświęconych wzorcom projektowym, jednak dotyczą one zazwyczaj języków Java lub C. Ta wyjątkowa książka zajmuje się wzorcami w języku PHP. W trakcie lektury poznasz podstawowe założenia programowania obiektowego, wzorce czynnościowe, kreacyjne i strukturalne. Przekonasz się też, jak bardzo wzrośnie jakość Twojego kodu, jeżeli do komunikacji z bazą danych MySQL zastosujesz wzorzec Proxy. Książka ta jest obowiązkową lekturą każdego programisty piszącego w języku PHP. Zobacz, jak dobry może być Twój kod!

Wzorce projektowe w PHP to:

  • najlepsze rozwiązania typowych problemów
  • sposób na poprawę jakości Twojego kodu
  • łatwiejsza komunikacja z bazą danych MySQL
  • mniej błędów w Twoich aplikacjach

Przekonaj się, jak tworzyć kod wysokiej jakości!



Przedmowa (13)

I. WSTĘP DO WZORCÓW PROJEKTOWYCH (19)

1. PHP a programowanie obiektowe (21)

  • Wstęp do średnio zaawansowanego i zaawansowanego programowania (21)
  • Dlaczego programowanie zorientowane obiektowo? (22)
    • W jaki sposób ułatwić rozwiązywanie problemów? (22)
    • Modularyzacja (23)
  • Klasy i obiekty (23)
    • Zasada jednej odpowiedzialności (24)
    • Konstruktory w PHP (24)
  • Klient jako klasa żądająca (25)
  • Co z wydajnością? (28)
    • Szybkość tworzenia i modyfikacji rozwiązań (28)
    • Szybkość w zespole (29)
  • Problemy z programowaniem sekwencyjnym i proceduralnym (29)
    • Programowanie sekwencyjne (29)
    • Programowanie proceduralne (30)
    • Zapłać teraz lub zapłać potem (30)

2. Podstawowe zagadnienia programowania obiektowego (33)

  • Abstrakcja (33)
    • Klasy abstrakcyjne (34)
    • Właściwości i metody abstrakcyjne (35)
    • Interfejsy (37)
    • Interfejsy i stałe (38)
    • Podpowiadanie typów: prawie typowanie (39)
  • Enkapsulacja (41)
    • Enkapsulacja w życiu codziennym (41)
    • Zapewnienie enkapsulacji poprzez widoczność (42)
    • Funkcje ustawiające i pobierające (44)
  • Dziedziczenie (46)
  • Polimorfizm (47)
    • Jedna nazwa, wiele implementacji (49)
    • Polimorfizm wbudowany we wzorcach projektowych (50)
  • Tylko spokojnie (50)

3. Podstawowe zagadnienia wzorców projektowych (51)

  • Wprowadzenie do MVC (51)
  • Podstawowe zasady wzorców projektowych (53)
    • Pierwsza zasada wzorców projektowych (54)
    • Wykorzystanie typów interfejsowych przy podpowiadaniu typów (54)
    • Klasy abstrakcyjne i ich interfejsy (55)
    • Druga zasada wzorców projektowych (58)
    • Przykład złożoności przy wykorzystaniu klienta (58)
    • Delegacja: różnica między MA a JEST (61)
  • Wzorce projektowe jako wielka ściąga (61)
    • Organizacja wzorców projektowych (62)
  • Wybór wzorca projektowego (63)
    • Czym spowodowana jest konieczność powtórnego projektowania? (63)
    • Co się zmienia? (63)
    • Czym różnią się wzorce projektowe od frameworków? (64)

4. Wykorzystanie UML-a we wzorcach projektowych (65)

  • Po co język modelowania UML? (65)
  • Diagramy klas (66)
  • Symbole uczestnictwa (67)
  • Notacja relacji (69)
    • Relacje asocjacji (69)
    • Relacje agregacji (71)
    • Relacje implementacji i dziedziczenia (72)
    • Relacje tworzenia (74)
    • Relacje wielokrotne (74)
  • Diagramy obiektów (75)
  • Diagramy interakcji (76)
  • Rola diagramów i notacji w programowaniu obiektowym (77)
  • Narzędzia dla UML (77)
  • Inne diagramy UML (78)

II. WZORCE KREACYJNE (79)

5. Wzorzec Metoda Fabrykująca (81)

  • Czym jest wzorzec Metoda Fabrykująca? (81)
  • Kiedy korzystać z Metody Fabrykującej (82)
  • Minimalistyczny przykład (83)
    • Praca z fabryką (83)
    • Klient (85)
  • Wprowadzanie zmian w klasach (86)
    • Dodanie elementów graficznych (86)
    • Koordynowanie produktów (87)
    • Zmiany w produkcie tekstowym (88)
    • Zmiany w produkcie graficznym (89)
    • Dodanie nowych produktów i parametryzowanych żądań (90)
    • Jedna fabryka i wiele produktów (91)
    • Nowe fabryki (91)
    • Nowe produkty (92)
    • Klient z parametrem (93)
    • Klasy pomocnicze (94)
    • Diagram plików (95)
    • Produkty się zmieniają, interfejs zostaw w spokoju (96)

6. Wzorzec Prototyp (99)

  • Czym jest wzorzec Prototyp? (99)
  • Kiedy wykorzystać wzorzec Prototyp (99)
  • Funkcja klonująca (100)
    • Podczas klonowania konstruktor nie jest wywoływany (102)
    • W funkcji konstruktora nie powinny być wykonywane żadne zadania (103)
  • Minimalistyczny przykład (103)
    • Badanie muszek owocówek (103)
  • Dodanie do prototypu elementów obiektowych (106)
    • Nowoczesna organizacja biznesowa (107)
    • Enkapsulacja w interfejsie (107)
    • Implementacje interfejsów (108)
    • Klient (111)
    • Wprowadzanie zmian, rozbudowa funkcjonalności (113)
    • Dynamiczne tworzenie instancji obiektów (114)
  • Wzorzec Prototyp w świecie PHP (115)

III. WZORCE STRUKTURALNE (117)

7. Wzorzec Adapter (119)

  • Czym jest wzorzec Adapter? (119)
  • Kiedy wykorzystywać wzorzec Adapter (120)
  • Wzorzec Adapter zaimplementowany przy wykorzystaniu dziedziczenia (122)
    • Minimalistyczny przykład adaptera klas: wymiana walut (122)
  • Wzorzec Adapter zaimplementowany przy wykorzystaniu kompozycji (126)
    • Z komputerów osobistych na urządzenia mobilne (126)
    • Adaptery a zmiany (133)

8. Wzorzec Dekorator (135)

  • Czym jest wzorzec Dekorator? (135)
  • Kiedy wykorzystywać wzorzec Dekorator (136)
  • Minimalistyczny przykład dekoratora (137)
    • Interfejs komponentu (137)
    • Interfejs dekoratora (137)
    • Konkretny komponent (138)
    • Konkretne dekoratory (139)
    • Klient (141)
  • Co z opakowywaniem? (142)
    • Opakowywanie prymitywów (142)
    • Klasy i funkcje opakowujące wbudowane w PHP (142)
    • Wzorce projektowe polegające na opakowywaniu (143)
  • Dekoratory z wieloma komponentami (143)
    • Wiele konkretnych komponentów (144)
    • Konkretne komponenty z wieloma stanami i wartościami (144)
    • Usługi randkowe dla programistów (145)
  • Interfejs użytkownika (UI) w HTML (150)
    • Klasa Client przekazująca dane z HTML (154)
    • Od nazwy zmiennej do instancji obiektu (155)
    • Dodawanie dekoracji (155)

IV. WZORCE CZYNNOŚCIOWE (157)

9. Wzorzec Metoda Szablonowa (159)

  • Czym jest wzorzec Metoda Szablonowa? (159)
  • Kiedy wykorzystywać wzorzec Metoda Szablonowa (160)
  • Wykorzystanie wzorca Metoda Szablonowa z obrazami i podpisami: minimalistyczny przykład (160)
    • Klasa abstrakcyjna (161)
    • Klasa konkretna (161)
  • Klasa Client (162)
  • Zasada Hollywood (162)
  • Wykorzystanie Metody Szablonowej z innymi wzorcami projektowymi (164)
    • Zmniejszenie obowiązków klienta (165)
    • Uczestnicy wzorca Metoda Szablonowa (166)
    • Uczestnicy wzorca Metoda Fabrykująca (167)
  • Hak we wzorcu Metoda Szablonowa (169)
    • Ustawienie haka (171)
    • Implementacja haka (171)
    • Klasa Client i uruchomienie haka (172)
  • Mały, ale potężny wzorzec Metoda Szablonowa (174)

10. Wzorzec Stan (175)

  • Czym jest wzorzec Stan? (175)
  • Kiedy korzystać ze wzorca Stan (176)
  • Maszyna stanowa (177)
  • Światło włączone i wyłączone: minimalistyczna implementacja wzorca (178)
    • Kontekst jest najważniejszy (178)
    • Stany (181)
    • Klasa Client wykonuje żądanie przez Context (182)
  • Dodawanie stanów (183)
    • Zmiana interfejsu (183)
    • Zmiana stanów (184)
    • Aktualizacja klasy Context (186)
    • Zaktualizowana klasa Client (187)
  • Nawigator: więcej wyborów i komórek (188)
    • Ustalenie szablonu stanów dla macierzy (189)
    • Przygotowanie interfejsu (189)
    • Kontekst (190)
    • Stany (192)
    • Klient wybiera ścieżkę (197)
  • Wzorzec Stan a PHP (198)

V. MYSQL I WZORCE PROJEKTOWE PHP (199)

11. Uniwersalna klasa połączeniowa i wykorzystanie wzorca Proxy dla bezpieczeństwa (201)

  • Prosty interfejs i klasa do połączeń MySQL (201)
    • Interfejs w ciąży (202)
    • Uniwersalna klasa połączeniowa MySQL i zmienne statyczne (202)
    • Prosty klient (204)
  • Proxy zabezpieczające proces logowania (204)
    • Stworzenie formularza rejestracji (205)
    • Implementacja proxy logowania (209)
  • Proxy i bezpieczeństwo w prawdziwym świecie (214)

12. Elastyczny wzorzec projektowy Strategia (217)

  • Algorytmy enkapsulujące (217)
    • Różnica między wzorcami Strategia i Stan (218)
    • Żadnych poleceń warunkowych, proszę (219)
    • Rodzina algorytmów (219)
  • Minimalistyczny wzorzec Strategia (219)
    • Klasa Client i skrypty wyzwalające (221)
    • Klasa Context i interfejs strategii (223)
    • Konkretne strategie (224)
  • Rozszerzony wzorzec Strategia uwzględniający bezpieczeństwo danych i parametryzowane algorytmy (227)
    • Klasa pomocnicza odpowiedzialna za bezpieczeństwo danych (227)
    • Dodanie parametru do metody algorithm (230)
    • Tabela survey (230)
    • Moduły wprowadzania danych (231)
    • Klasa Client wzywa pomocy (235)
    • Drobna, ale ważna zmiana w klasie Context (237)
    • Konkretne strategie (237)
  • Elastyczny wzorzec Strategia (242)

13. Wzorzec projektowy Łańcuch Odpowiedzialności (245)

  • Podaj dalej (245)
  • Łańcuch Odpowiedzialności w aplikacji pomocy technicznej (247)
    • Utworzenie i uzupełnienie tabeli odpowiedzi (247)
    • Łańcuch Odpowiedzialności pomocy technicznej (251)
  • Zautomatyzowany Łańcuch Odpowiedzialności i Metoda Fabrykująca (256)
    • Łańcuch Odpowiedzialności i żądania w oparciu o datę (256)
    • Metoda Fabrykująca wieńczy dzieło (261)
  • Łatwość aktualizacji (265)

14. Budowa systemu CMS za pomocą wzorca Obserwator (267)

  • Wbudowane interfejsy Obserwatora (267)
  • Kiedy korzystać ze wzorca Obserwator (268)
  • Wykorzystanie SPL we wzorcu Obserwator (269)
    • SplSubject (270)
    • SplObserver (270)
    • SplObjectStorage (271)
    • Konkretny podmiot SPL (271)
    • Konkretny obserwator SPL (272)
    • Klient SPL (273)
  • Czyste PHP i wzorzec Obserwator (274)
    • Implementacja klas abstrakcyjnych Subject i ConcreteSubject (274)
    • Interfejs Observer i wiele konkretnych obserwatorów (276)
    • Klient (277)
  • Budowa prostego systemu CMS (278)
    • Infrastruktura programu (279)
    • Obserwator dla wielu urządzeń (283)
  • Myślenie obiektowe (294)

Skorowidz (295)

  • Title: PHP. Wzorce projektowe
  • Author: William Sanders
  • Original title: Learning PHP Design Patterns
  • Translation: Jakub Hubisz
  • ISBN: 978-83-246-7458-9, 9788324674589
  • Date of issue: 2013-10-20
  • Format: Ebook
  • Item ID: phpwzo
  • Publisher: Helion