O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

PHP. Wzorce projektowe

Book Description

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!

Table of Contents

  1. Dedication
  2. Przedmowa
    1. Do kogo skierowana jest ta książka?
    2. Założenia w tej książce
    3. Zawartość książki
      1. Konwencje wykorzystywane w książce
    4. Przykłady kodu
    5. Podziękowania
  3. I. Wstęp do wzorców projektowych
    1. 1. PHP a programowanie obiektowe
      1. Wstęp do średnio zaawansowanego i zaawansowanego programowania
      2. Dlaczego programowanie zorientowane obiektowo?
        1. W jaki sposób ułatwić rozwiązywanie problemów?
        2. Modularyzacja
      3. Klasy i obiekty
        1. Zasada jednej odpowiedzialności
        2. Konstruktory w PHP
      4. Klient jako klasa żądająca
      5. Co z wydajnością?
        1. Szybkość tworzenia i modyfikacji rozwiązań
        2. Szybkość w zespole
      6. Problemy z programowaniem sekwencyjnym i proceduralnym
        1. Programowanie sekwencyjne
        2. Programowanie proceduralne
        3. Zapłać teraz lub zapłać potem
    2. 2. Podstawowe zagadnienia programowania obiektowego
      1. Abstrakcja
        1. Klasy abstrakcyjne
        2. Właściwości i metody abstrakcyjne
        3. Interfejsy
        4. Interfejsy i stałe
        5. Podpowiadanie typów: prawie typowanie
      2. Enkapsulacja
        1. Enkapsulacja w życiu codziennym
        2. Zapewnienie enkapsulacji poprzez widoczność
          1. Private
          2. Protected
          3. Public
        3. Funkcje ustawiające i pobierające
      3. Dziedziczenie
      4. Polimorfizm
        1. Jedna nazwa, wiele implementacji
        2. Polimorfizm wbudowany we wzorcach projektowych
      5. Tylko spokojnie
    3. 3. Podstawowe zagadnienia wzorców projektowych
      1. Wprowadzenie do MVC
      2. Podstawowe zasady wzorców projektowych
        1. Pierwsza zasada wzorców projektowych
        2. Wykorzystanie typów interfejsowych przy podpowiadaniu typów
        3. Klasy abstrakcyjne i ich interfejsy
        4. Druga zasada wzorców projektowych
        5. Przykład złożoności przy wykorzystaniu klienta
        6. Delegacja: różnica między MA a JEST
      3. Wzorce projektowe jako wielka ściąga
        1. Organizacja wzorców projektowych
          1. Wzorce kreacyjne
          2. Wzorce strukturalne
          3. Wzorce czynnościowe
          4. Kategoria klas
          5. Kategoria obiektów
      4. Wybór wzorca projektowego
        1. Czym spowodowana jest konieczność powtórnego projektowania?
        2. Co się zmienia?
        3. Czym różnią się wzorce projektowe od frameworków?
    4. 4. Wykorzystanie UML-a we wzorcach projektowych
      1. Po co język modelowania UML?
      2. Diagramy klas
      3. Symbole uczestnictwa
      4. Notacja relacji
        1. Relacje asocjacji
        2. Relacje agregacji
        3. Relacje implementacji i dziedziczenia
        4. Relacje tworzenia
        5. Relacje wielokrotne
      5. Diagramy obiektów
      6. Diagramy interakcji
      7. Rola diagramów i notacji w programowaniu obiektowym
      8. Narzędzia dla UML
      9. Inne diagramy UML
  4. II. Wzorce kreacyjne
    1. 5. Wzorzec Metoda Fabrykująca
      1. Czym jest wzorzec Metoda Fabrykująca?
      2. Kiedy korzystać z Metody Fabrykującej
      3. Minimalistyczny przykład
        1. Praca z fabryką
          1. Produkt
        2. Klient
      4. Wprowadzanie zmian w klasach
        1. Dodanie elementów graficznych
        2. Koordynowanie produktów
        3. Zmiany w produkcie tekstowym
        4. Zmiany w produkcie graficznym
        5. Dodanie nowych produktów i parametryzowanych żądań
        6. Jedna fabryka i wiele produktów
        7. Nowe fabryki
        8. Nowe produkty
        9. Klient z parametrem
        10. Klasy pomocnicze
        11. Diagram plików
        12. Produkty się zmieniają, interfejs zostaw w spokoju
    2. 6. Wzorzec Prototyp
      1. Czym jest wzorzec Prototyp?
      2. Kiedy wykorzystać wzorzec Prototyp
      3. Funkcja klonująca
        1. Podczas klonowania konstruktor nie jest wywoływany
        2. W funkcji konstruktora nie powinny być wykonywane żadne zadania
      4. Minimalistyczny przykład
        1. Badanie muszek owocówek
          1. Interfejs w postaci klasy abstrakcyjnej i konkretna implementacja
          2. Klient
      5. Dodanie do prototypu elementów obiektowych
        1. Nowoczesna organizacja biznesowa
        2. Enkapsulacja w interfejsie
        3. Implementacje interfejsów
        4. Klient
        5. Wprowadzanie zmian, rozbudowa funkcjonalności
        6. Dynamiczne tworzenie instancji obiektów
          1. Zmienne i obiekty
      6. Wzorzec Prototyp w świecie PHP
  5. III. Wzorce strukturalne
    1. 7. Wzorzec Adapter
      1. Czym jest wzorzec Adapter?
      2. Kiedy wykorzystywać wzorzec Adapter
      3. Wzorzec Adapter zaimplementowany przy wykorzystaniu dziedziczenia
        1. Minimalistyczny przykład adaptera klas: wymiana walut
          1. Wprowadzenie euro
          2. Tworzenie adaptera dla euro
      4. Wzorzec Adapter zaimplementowany przy wykorzystaniu kompozycji
        1. Z komputerów osobistych na urządzenia mobilne
          1. Tylko komputery osobiste
          2. Adaptacja na potrzeby urządzeń mobilnych
          3. Klasa Client jako uczestnik wzorca
        2. Adaptery a zmiany
    2. 8. Wzorzec Dekorator
      1. Czym jest wzorzec Dekorator?
      2. Kiedy wykorzystywać wzorzec Dekorator
      3. Minimalistyczny przykład dekoratora
        1. Interfejs komponentu
        2. Interfejs dekoratora
        3. Konkretny komponent
        4. Konkretne dekoratory
          1. Obsługa
          2. Wideo
          3. Baza danych
        5. Klient
      4. Co z opakowywaniem?
        1. Opakowywanie prymitywów
        2. Klasy i funkcje opakowujące wbudowane w PHP
        3. Wzorce projektowe polegające na opakowywaniu
      5. Dekoratory z wieloma komponentami
        1. Wiele konkretnych komponentów
        2. Konkretne komponenty z wieloma stanami i wartościami
        3. Usługi randkowe dla programistów
          1. Interfejs komponentu
          2. Konkretne komponenty
          3. Dekorator z metodami komponentu
          4. Konkretne dekoratory
          5. Klasa Client
      6. Interfejs użytkownika (UI) w HTML
        1. Klasa Client przekazująca dane z HTML
        2. Od nazwy zmiennej do instancji obiektu
        3. Dodawanie dekoracji
  6. IV. Wzorce czynnościowe
    1. 9. Wzorzec Metoda Szablonowa
      1. Czym jest wzorzec Metoda Szablonowa?
      2. Kiedy wykorzystywać wzorzec Metoda Szablonowa
      3. Wykorzystanie wzorca Metoda Szablonowa z obrazami i podpisami: minimalistyczny przykład
        1. Klasa abstrakcyjna
        2. Klasa konkretna
      4. Klasa Client
      5. Zasada Hollywood
      6. Wykorzystanie Metody Szablonowej z innymi wzorcami projektowymi
        1. Zmniejszenie obowiązków klienta
        2. Uczestnicy wzorca Metoda Szablonowa
        3. Uczestnicy wzorca Metoda Fabrykująca
      7. Hak we wzorcu Metoda Szablonowa
        1. Ustawienie haka
        2. Implementacja haka
        3. Klasa Client i uruchomienie haka
          1. Ustawianie zmiennej boolowskiej za pomocą operatorów porównania
          2. Klasa Client
      8. Mały, ale potężny wzorzec Metoda Szablonowa
    2. 10. Wzorzec Stan
      1. Czym jest wzorzec Stan?
      2. Kiedy korzystać ze wzorca Stan
      3. Maszyna stanowa
      4. Światło włączone i wyłączone: minimalistyczna implementacja wzorca
        1. Kontekst jest najważniejszy
          1. Instancje stanów w klasie Context
          2. Wywoływanie metod stanu: metody-wyzwalacze
          3. Ustawienie aktualnego stanu
          4. Akcesory stanu
          5. Podsumowanie klasy Context
        2. Stany
          1. OnState
          2. OffState
        3. Klasa Client wykonuje żądanie przez Context
      5. Dodawanie stanów
        1. Zmiana interfejsu
        2. Zmiana stanów
          1. OffState
          2. OnState
          3. BrighterState
          4. BrightestState
        3. Aktualizacja klasy Context
        4. Zaktualizowana klasa Client
      6. Nawigator: więcej wyborów i komórek
        1. Ustalenie szablonu stanów dla macierzy
        2. Przygotowanie interfejsu
        3. Kontekst
        4. Stany
          1. Cell1State
          2. Cell2State
          3. Cell3State
          4. Cell4State
          5. Cell5State
          6. Cell6State
          7. Cell7State
          8. Cell8State
          9. Cell9State
        5. Klient wybiera ścieżkę
      7. Wzorzec Stan a PHP
  7. V. MySQL i wzorce projektowe PHP
    1. 11. Uniwersalna klasa połączeniowa i wykorzystanie wzorca Proxy dla bezpieczeństwa
      1. Prosty interfejs i klasa do połączeń MySQL
        1. Interfejs w ciąży
        2. Uniwersalna klasa połączeniowa MySQL i zmienne statyczne
        3. Prosty klient
      2. Proxy zabezpieczające proces logowania
        1. Stworzenie formularza rejestracji
        2. Implementacja proxy logowania
          1. Formularz logowania i klasa Client
          2. Proxy w akcji
          3. Prawdziwy podmiot
      3. Proxy i bezpieczeństwo w prawdziwym świecie
    2. 12. Elastyczny wzorzec projektowy Strategia
      1. Algorytmy enkapsulujące
        1. Różnica między wzorcami Strategia i Stan
        2. Żadnych poleceń warunkowych, proszę
        3. Rodzina algorytmów
      2. Minimalistyczny wzorzec Strategia
        1. Klasa Client i skrypty wyzwalające
        2. Klasa Context i interfejs strategii
        3. Konkretne strategie
          1. DataEntry
          2. DisplayData
          3. SearchData
          4. UpdateData
          5. DeleteRecord
          6. Interfejs i klasa połączeniowa
      3. Rozszerzony wzorzec Strategia uwzględniający bezpieczeństwo danych i parametryzowane algorytmy
        1. Klasa pomocnicza odpowiedzialna za bezpieczeństwo danych
        2. Dodanie parametru do metody algorithm
        3. Tabela survey
        4. Moduły wprowadzania danych
        5. Klasa Client wzywa pomocy
        6. Drobna, ale ważna zmiana w klasie Context
        7. Konkretne strategie
          1. DataEntry
          2. DisplayAll
          3. SearchData
          4. UpdateData
          5. DeleteRecord
      4. Elastyczny wzorzec Strategia
    3. 13. Wzorzec projektowy Łańcuch Odpowiedzialności
      1. Podaj dalej
      2. Łańcuch Odpowiedzialności w aplikacji pomocy technicznej
        1. Utworzenie i uzupełnienie tabeli odpowiedzi
          1. InsertData.php
          2. UpdateData.php
        2. Łańcuch Odpowiedzialności pomocy technicznej
          1. Wprowadzanie danych za pośrednictwem HTML, klasa Client i uczestnicy żądania
          2. Konkretne klasy obsługujące i ich interfejs
      3. Zautomatyzowany Łańcuch Odpowiedzialności i Metoda Fabrykująca
        1. Łańcuch Odpowiedzialności i żądania w oparciu o datę
        2. Metoda Fabrykująca wieńczy dzieło
          1. Klasy Creator i HungerFactory
          2. Produkt i poszczególne kraje
          3. Klasy pomocnicze, zasoby i style
      4. Łatwość aktualizacji
    4. 14. Budowa systemu CMS za pomocą wzorca Obserwator
      1. Wbudowane interfejsy Obserwatora
      2. Kiedy korzystać ze wzorca Obserwator
      3. Wykorzystanie SPL we wzorcu Obserwator
        1. SplSubject
        2. SplObserver
        3. SplObjectStorage
        4. Konkretny podmiot SPL
        5. Konkretny obserwator SPL
        6. Klient SPL
      4. Czyste PHP i wzorzec Obserwator
        1. Implementacja klas abstrakcyjnych Subject i ConcreteSubject
        2. Interfejs Observer i wiele konkretnych obserwatorów
          1. ConcreteObserverDT (implementacja dla komputera PC)
          2. ConcreteObserverTablet (implementacja dla tabletu)
          3. ConcreteObserverPhone (implementacja dla telefonu)
        3. Klient
      5. Budowa prostego systemu CMS
        1. Infrastruktura programu
          1. Tabela dla systemu CMS
          2. Wprowadzanie i aktualizacja danych w systemie CMS
        2. Obserwator dla wielu urządzeń
          1. Dwa dokumenty HTML dla interfejsów
          2. Klasa SniffClient
          3. Klasy dla podmiotu
          4. Wiele konkretnych obserwatorów
            1. Obserwator dla telefonów komórkowych
            2. Obserwator dla tabletów
            3. Obserwator dla komputerów stacjonarnych
      6. Myślenie obiektowe
  8. A. O autorze
  9. Indeks
  10. Kolofon
  11. Copyright