Spis treści
O autorze
O recenzencie technicznym
Podziękowania
Wprowadzenie
Część I. Obiekty
Rozdział 1. PHP – projektowanie
Problem
PHP a inne języki programowania
O książce
Obiekty
Wzorce
Narzędzia
Nowości w szóstym wydaniu
Podsumowanie
Rozdział 2. PHP i obiekty
Nieoczekiwany sukces obiektów w PHP
PHP/FI – u zarania języka
PHP3 – składniowy lukier
Cicha rewolucja – PHP4
PHP5 – nieuchronne zmiany
PHP7 – doganianie reszty świata
PHP8 – dalsza konsolidacja
Debata obiektowa – za czy przeciw?
Podsumowanie
Rozdział 3. Obiektowy elementarz
Klasy i obiekty
Pierwsza klasa
Pierwszy obiekt (lub dwa)
Definiowanie składowych klasy
Metody
Metoda konstrukcji obiektu
Promocja składowych konstruktora
Argumenty domyślne i nazwane
Typy argumentów metod
Typy elementarne
Niektóre inne funkcje kontroli typów
Deklaracje typów – typy obiektowe
Deklaracje typów – typy elementarne
Typ mixed
Unia
Typy przyjmujące wartość null
Deklaracje typów zwracanych
Dziedziczenie
Problemy, które można rozwiązać poprzez dziedziczenie
Stosowanie dziedziczenia
Zarządzanie dostępem do klasy – słowa public, private i protected
Podsumowanie
Rozdział 4. Zaawansowana obsługa obiektów
Metody i składowe statyczne
Składowe stałe
Klasy abstrakcyjne
Interfejsy
Cechy typowe
Zadanie dla cech typowych
Definiowanie i stosowanie cechy typowej
Stosowanie wielu cech typowych
Łączenie cech z interfejsami
Unikanie kolizji nazw metod za pomocą słowa insteadof
Aliasy przesłoniętych metod cech typowych
Cechy typowe z metodami statycznymi
Dostęp do składowych klasy włączającej
Definiowanie metody abstrakcyjnej cechy typowej
Zmiana dostępności metod cech typowych
Późne wiązanie statyczne: słowo static
Obsługa błędów
Wyjątki
Klasy i metody finalne
Klasa do obsługi błędów wewnętrznych
Przechwytywanie chybionych wywołań
Definiowanie destruktorów
Wykonywanie kopii obiektów
Reprezentacja obiektu w ciągach znaków
Wywołania zwrotne, funkcje anonimowe i domknięcia
Klasy anonimowe
Podsumowanie
Rozdział 5. Narzędzia obiektowe
PHP a pakiety
Pakiety i przestrzenie nazw w PHP
Automatyczne wczytywanie kodu
Klasy i funkcje pomocnicze
Szukanie klasy
Badanie obiektów i klas
Pozyskiwanie ciągu pełnej nazwy klasy
Badanie metod
Badanie składowych
Badanie relacji dziedziczenia
Badanie wywołań metod
Reflection API
Zaczynamy
Pora zakasać rękawy
Badanie klasy
Badanie metod
Badanie argumentów metod
Zastosowanie Reflection API
Atrybuty
Podsumowanie
Rozdział 6. Obiekty
Czym jest projektowanie?
Programowanie obiektowe i proceduralne
Odpowiedzialność
Spójność
Sprzęganie
Ortogonalność
Zasięg klas
Polimorfizm
Hermetyzacja
Nieważne jak
Cztery drogowskazy
Zwielokrotnianie kodu
Przemądrzałe klasy
Złota rączka
Za dużo warunków
Język UML
Diagramy klas
Diagramy sekwencji
Podsumowanie
Część II. Wzorce
Rozdział 7. Czym są wzorce projektowe?
Czym są wzorce projektowe?
Wzorzec projektowy
Nazwa
Problem
Rozwiązanie
Konsekwencje
Format wzorca według Bandy Czworga
Po co nam wzorce projektowe?
Wzorzec projektowy definiuje problem
Wzorzec projektowy definiuje rozwiązanie
Wzorce projektowe są niezależne od języka programowania
Wzorce definiują słownictwo
Wzorce są wypróbowane
Wzorce mają współpracować
Wzorce promują prawidła projektowe
Wzorce są stosowane w popularnych frameworkach
Wzorce projektowe a PHP
Podsumowanie
Rozdział 8. Wybrane prawidła wzorców
Olśnienie wzorcami
Kompozycja i dziedziczenie
Problem
Zastosowanie kompozycji
Rozprzęganie
Problem
Osłabianie sprzężenia
Kod ma używać interfejsów, nie implementacji
Zmienne koncepcje
Nadmiar wzorców
Wzorce
Wzorce generowania obiektów
Wzorce organizacji obiektów i klas
Wzorce zadaniowe
Wzorce korporacyjne
Wzorce baz danych
Podsumowanie
Rozdział 9. Generowanie obiektów
Generowanie obiektów – problemy i rozwiązania
Wzorzec Singleton
Problem
Implementacja
Konsekwencje
Wzorzec Factory Method
Problem
Implementacja
Konsekwencje
Wzorzec Abstract Factory
Problem
Implementacja
Konsekwencje
Prototyp
Problem
Implementacja
Naginanie rzeczywistości – wzorzec Service Locator
Doskonała izolacja – wstrzykiwanie zależności
Problem
Implementacja
Konsekwencje
Podsumowanie
Rozdział 10. Wzorce elastycznego programowania obiektowego
Strukturalizacja klas pod kątem elastyczności obiektów
Wzorzec Composite
Problem
Implementacja
Konsekwencje
Composite – podsumowanie
Wzorzec Decorator
Problem
Implementacja
Konsekwencje
Wzorzec Facade
Problem
Implementacja
Konsekwencje
Podsumowanie
Rozdział 11. Reprezentacja i realizacja zadań
Wzorzec Interpreter
Problem
Implementacja
Ciemne strony wzorca Interpreter
Wzorzec Strategy
Problem
Implementacja
Wzorzec Observer
Implementacja
Wzorzec Visitor
Problem
Implementacja
Wady wzorca Visitor
Wzorzec Command
Problem
Implementacja
Wzorzec Null Object
Problem
Implementacja
Podsumowanie
Rozdział 12. Wzorce korporacyjne
Przegląd architektury
Wzorce
Aplikacje i warstwy
Małe oszustwo na samym początku
Wzorzec Registry
Implementacja
Warstwa prezentacji
Wzorzec Front Controller
Wzorzec Application Controller
Wzorzec Page Controller
Wzorce Template View i View Helper
Warstwa logiki biznesowej
Wzorzec Transaction Script
Wzorzec Domain Model
Podsumowanie
Rozdział 13. Wzorce bazodanowe
Warstwa danych
Wzorzec Data Mapper
Problem
Implementacja
Konsekwencje
Wzorzec Identity Map
Problem
Implementacja
Konsekwencje
Wzorzec Unit of Work
Problem
Implementacja
Konsekwencje
Wzorzec Lazy Load
Problem
Implementacja
Konsekwencje
Wzorzec Domain Object Factory
Problem
Implementacja
Konsekwencje
Wzorzec Identity Object
Problem
Implementacja
Konsekwencje
Wzorce Selection Factory i Update Factory
Problem
Implementacja
Konsekwencje
Co zostało z wzorca Data Mapper?
Podsumowanie
Część III. Narzędzia
Rozdział 14. Dobre (i złe) praktyki
Nie tylko kod
Pukanie do otwartych drzwi
Jak to zgrać?
Uskrzydlanie kodu
Standardy
Vagrant
Testowanie
Ciągła integracja
Podsumowanie
Rozdział 15. Standardy PHP
Po co te standardy?
Jakie są standardowe rekomendacje PHP?
Dlaczego akurat PSR?
Rekomendacje PSR – dla kogo?
Kodowanie z klasą
Podstawowy standard kodowania PSR-1
Rozszerzona rekomendacja stylu kodowania PSR-12
Sprawdzanie i poprawianie kodu
PSR-4 – automatyczne ładowanie
Zasady, które są dla nas ważne
Podsumowanie
Rozdział 16. Używanie i tworzenie
Czym jest Composer?
Instalowanie Composera
Instalowanie (zbioru) pakietów
Instalowanie pakietu z poziomu wiersza poleceń
Wersje
Element require-dev
Composer i automatyczne ładowanie kodu
Tworzenie własnego pakietu
Dodawanie informacji o pakiecie
Pakiety systemowe
Dystrybucja za pośrednictwem repozytorium Packagist
Odrobina prywatności
Podsumowanie
Rozdział 17. Zarządzanie wersjami projektu
Po co mi kontrola wersji?
Skąd wziąć klienta Git?
Obsługa repozytorium Git online
Konfigurowanie serwera Git
Tworzenie repozytorium zdalnego
Rozpoczynamy projekt
Klonowanie repozytorium
Wprowadzanie i zatwierdzanie zmian
Dodawanie i usuwanie plików i katalogów
Dodawanie pliku
Usuwanie pliku
Dodawanie katalogu
Usuwanie katalogów
Etykietowanie wersji
Rozgałęzianie projektu
Podsumowanie
Rozdział 18. Testy jednostkowe z PHPUnit
Testy funkcjonalne i testy jednostkowe
Testowanie ręczne
PHPUnit
Tworzenie przypadku testowego
Metody asercji
Testowanie wyjątków
Uruchamianie zestawów testów
Ograniczenia
Atrapy i imitacje
Dobry test to oblany test
Testy dla aplikacji WWW
Refaktoryzacja aplikacji WWW pod kątem testów
Proste testy aplikacji WWW
Selenium
Słowo ostrzeżenia
Podsumowanie
Rozdział 19. Automatyzacja instalacji z Phingiem
Czym jest Phing?
Pobieranie i instalacja pakietu Phing
Montowanie dokumentu kompilacji
Różnicowanie zadań kompilacji
Właściwości
Typy
Operacje
Podsumowanie
Rozdział 20. Vagrant
Problem
Odrobina przygotowań
Wybór i instalacja środowiska Vagrant
Montowanie lokalnych katalogów w maszynie wirtualnej Vagranta
Zaopatrywanie maszyny wirtualnej
Konfigurowanie serwera WWW
Konfigurowanie MariaDB
Konfigurowanie nazwy hosta
Kilka słów na koniec
Podsumowanie
Rozdział 21. Ciągła integracja kodu
Czym jest ciągła integracja?
Przygotowanie projektu do ciągłej integracji
Instalowanie rozszerzeń Jenkinsa
Konfigurowanie klucza publicznego serwera Git
Instalowanie projektu
Pierwsza kompilacja
Konfigurowanie raportów
Automatyzacja kompilacji
Podsumowanie
Rozdział 22. Obiekty, wzorce, narzędzia
Obiekty
Wybór
Hermetyzacja i delegowanie
Osłabianie sprzężenia
Zdatność do wielokrotnego stosowania kodu
Estetyka
Wzorce
Co dają nam wzorce?
Wzorce a zasady projektowe
Narzędzia
Testowanie
Standardy
Zarządzanie wersjami
Automatyczna kompilacja (instalacja)
System integracji ciągłej
Co pominęliśmy?
Podsumowanie
Dodatki
Dodatek A. Bibliografia
Książki
Publikacje
Witryny WWW
Dodatek B. Prosty analizator leksykalny
Skaner
Analizator leksykalny
Opinie
Na razie nie ma opinii o produkcie.