PHP. Obiekty, wzorce, narzędzia. Wydanie V - ebook
PHP. Obiekty, wzorce, narzędzia. Wydanie V - ebook
Jeszcze kilka lat temu programowanie zorientowane obiektowo w PHP wydawało się dość karkołomnym zagadnieniem. Upowszechnienie licznych frameworków sprawiło jednak, że coraz większa liczba programistów tworzy aplikacje WWW, pisząc kod obiektowy w PHP. Frameworki są chętnie stosowane, gdyż wydaje się, że dzięki nim nie trzeba już poświęcać czasu na rozgryzanie szczegółów działania kodu. Niestety, bardzo często okazuje się, że bez zrozumienia zasad działania frameworków i bez umiejętności oceny jakości zastosowanych w nich rozwiązań projektant nie jest w stanie napisać poprawnie funkcjonującej aplikacji.
Trzymasz w ręku książkę przeznaczoną dla programistów, którzy chcą dogłębnie zrozumieć mechanizmy programowania obiektowego w języku PHP i dzięki temu tworzyć, testować oraz publikować efektywny kod. Dużo uwagi poświęcono tu wzorcom projektowym i ich stosowaniu. Opisano zalety wzorców i przedstawiono sporo klasycznych już rozwiązań. Nie zabrakło również omówienia narzędzi oraz metod postępowania, dzięki którym doskonały kod staje się udanym projektem. To wszystko sprawia, że niniejsza książka jest nieodzownym podręcznikiem dla każdego projektanta, który chce tworzyć niezawodne, eleganckie i efektywne aplikacje.
Najważniejsze zagadnienia:
- praca z obiektami: podstawy i zagadnienia zaawansowane
- wzorce projektowe, w tym korporacyjne i bazodanowe
- dobre i złe praktyki programistyczne
- zarządzanie wersjami i publikowanie kodu
- strategie testów automatycznych i ciągłej integracji
Twój klucz do sukcesu: eleganckie wzorce projektowe i najlepsze praktyki programistyczne!
Spis treści
O autorze (15)
O recenzencie technicznym (17)
Podziękowania (19)
Wprowadzenie (21)
CZĘŚĆ I. OBIEKTY (23)
Rozdział 1. PHP - projektowanie i zarządzanie (25)
- Problem (25)
- PHP a inne języki programowania (26)
- O książce (28)
- Obiekty (28)
- Wzorce (28)
- Narzędzia (29)
- Nowości w piątym wydaniu (30)
- Podsumowanie (30)
Rozdział 2. PHP i obiekty (31)
- Nieoczekiwany sukces obiektów w PHP (31)
- PHP/FI - u zarania języka (31)
- PHP3 - składniowy lukier (31)
- Cicha rewolucja - PHP4 (32)
- PHP5 - nieuchronne zmiany (33)
- PHP7 - doganianie reszty świata (34)
- Debata obiektowa - za czy przeciw? (34)
- Podsumowanie (35)
Rozdział 3. Obiektowy elementarz (37)
- Klasy i obiekty (37)
- Pierwsza klasa (37)
- Pierwszy obiekt (lub dwa) (38)
- Definiowanie składowych klasy (39)
- Metody (41)
- Metoda konstrukcji obiektu (42)
- Typy argumentów metod (43)
- Typy elementarne (44)
- Typy obiektowe (47)
- Dziedziczenie (50)
- Problemy związane z dziedziczeniem (51)
- Stosowanie dziedziczenia (55)
- Zarządzanie dostępem do klasy - słowa public, private i protected (60)
- Podsumowanie (64)
Rozdział 4. Zaawansowana obsługa obiektów (65)
- Metody i składowe statyczne (65)
- Składowe stałe (68)
- Klasy abstrakcyjne (69)
- Interfejsy (71)
- Cechy typowe (73)
- Zadanie dla cech typowych (73)
- Definiowanie i stosowanie cechy typowej (74)
- Stosowanie wielu cech typowych (75)
- Łączenie cech z interfejsami (75)
- Unikanie kolizji nazw metod za pomocą słowa insteadof (76)
- Aliasy metod cech typowych (77)
- Cechy typowe z metodami statycznymi (78)
- Dostęp do składowych klasy włączającej (79)
- Definiowanie metody abstrakcyjnej cechy typowej (79)
- Zmiana dostępności metod cech typowych (80)
- Późne wiązanie statyczne: słowo static (81)
- Obsługa błędów (84)
- Wyjątki (85)
- Klasy i metody finalne (92)
- Klasa do obsługi błędów wewnętrznych (93)
- Przechwytywanie chybionych wywołań (94)
- Definiowanie destruktorów (99)
- Wykonywanie kopii obiektów (100)
- Reprezentacja obiektu w ciągach znaków (103)
- Wywołania zwrotne, funkcje anonimowe i domknięcia (104)
- Klasy anonimowe (108)
- Podsumowanie (109)
Rozdział 5. Narzędzia obiektowe (111)
- PHP a pakiety (111)
- Pakiety i przestrzenie nazw w PHP (111)
- Automatyczne wczytywanie kodu (119)
- Klasy i funkcje pomocnicze (122)
- Szukanie klasy (123)
- Badanie obiektów i klas (124)
- Pozyskiwanie ciągu pełnej nazwy klasy (125)
- Badanie metod (126)
- Badanie składowych (127)
- Badanie relacji dziedziczenia (127)
- Badanie wywołań metod (128)
- Interfejs retrospekcji - Reflection API (129)
- Zaczynamy (129)
- Pora zakasać rękawy (130)
- Badanie klasy (132)
- Badanie metod (133)
- Badanie argumentów metod (135)
- Korzystanie z retrospekcji (136)
- Podsumowanie (139)
Rozdział 6. Obiektya projektowanie obiektowe (141)
- Czym jest projektowanie? (141)
- Programowanie obiektowe i proceduralne (142)
- Odpowiedzialność (145)
- Spójność (146)
- Sprzęganie (146)
- Ortogonalność (146)
- Zasięg klas (147)
- Polimorfizm (148)
- Hermetyzacja (149)
- Nieważne jak (150)
- Cztery drogowskazy (151)
- Zwielokrotnianie kodu (151)
- Przemądrzałe klasy (151)
- Złota rączka (151)
- Za dużo warunków (151)
- Język UML (152)
- Diagramy klas (152)
- Diagramy sekwencji (157)
- Podsumowanie (159)
CZĘŚĆ II. WZORCE (161)
Rozdział 7. Czym są wzorce projektowe? Do czego się przydają? (163)
- Czym są wzorce projektowe? (163)
- Wzorzec projektowy (165)
- Nazwa (165)
- Problem (166)
- Rozwiązanie (166)
- Konsekwencje (166)
- Format wzorca według Bandy Czworga (166)
- Po co nam wzorce projektowe? (167)
- Wzorzec projektowy definiuje problem (167)
- Wzorzec projektowy definiuje rozwiązanie (167)
- Wzorce projektowe są niezależne od języka programowania (167)
- Wzorce definiują słownictwo (168)
- Wzorce są wypróbowane (168)
- Wzorce mają współpracować (169)
- Wzorce promują prawidła projektowe (169)
- Wzorce są stosowane w popularnych frameworkach (169)
- Wzorce projektowe a PHP (169)
- Podsumowanie (169)
Rozdział 8. Wybrane prawidła wzorców (171)
- Olśnienie wzorcami (171)
- Kompozycja i dziedziczenie (172)
- Problem (172)
- Zastosowanie kompozycji (175)
- Rozprzęganie (177)
- Problem (178)
- Osłabianie sprzężenia (179)
- Kod ma używać interfejsów, nie implementacji (180)
- Zmienne koncepcje (181)
- Nadmiar wzorców (182)
- Wzorce (182)
- Wzorce generowania obiektów (183)
- Wzorce organizacji obiektów i klas (183)
- Wzorce zadaniowe (183)
- Wzorce korporacyjne (183)
- Wzorce baz danych (183)
- Podsumowanie (183)
Rozdział 9. Generowanie obiektów (185)
- Generowanie obiektów - problemy i rozwiązania (185)
- Wzorzec Singleton (189)
- Problem (189)
- Implementacja (190)
- Konsekwencje (192)
- Wzorzec Factory Method (192)
- Problem (192)
- Implementacja (195)
- Konsekwencje (196)
- Wzorzec Abstract Factory (197)
- Problem (197)
- Implementacja (198)
- Konsekwencje (200)
- Prototyp (201)
- Problem (202)
- Implementacja (202)
- Naginanie rzeczywistości - wzorzec Service Locator (205)
- Doskonała izolacja - wstrzykiwanie zależności (206)
- Problem (207)
- Implementacja (207)
- Konsekwencje (210)
- Podsumowanie (210)
Rozdział 10. Wzorce elastycznego programowania obiektowego (211)
- Strukturalizacja klas pod kątem elastyczności obiektów (211)
- Wzorzec Composite (211)
- Problem (212)
- Implementacja (214)
- Konsekwencje (217)
- Composite - podsumowanie (220)
- Wzorzec Decorator (220)
- Problem (221)
- Implementacja (223)
- Konsekwencje (226)
- Wzorzec Facade (226)
- Problem (227)
- Implementacja (228)
- Konsekwencje (229)
- Podsumowanie (229)
Rozdział 11. Reprezentacja i realizacja zadań (231)
- Wzorzec Interpreter (231)
- Problem (231)
- Implementacja (232)
- Ciemne strony wzorca Interpreter (239)
- Wzorzec Strategy (240)
- Problem (240)
- Implementacja (241)
- Wzorzec Observer (244)
- Implementacja (246)
- Wzorzec Visitor (252)
- Problem (252)
- Implementacja (253)
- Wady wzorca Visitor (258)
- Wzorzec Command (258)
- Problem (258)
- Implementacja (259)
- Wzorzec Null Object (262)
- Problem (263)
- Implementacja (265)
- Podsumowanie (266)
Rozdział 12. Wzorce korporacyjne (267)
- Przegląd architektury (267)
- Wzorce (268)
- Aplikacje i warstwy (268)
- Małe oszustwo na samym początku (270)
- Wzorzec Registry (271)
- Implementacja (272)
- Warstwa prezentacji (275)
- Wzorzec Front Controller (276)
- Wzorzec Application Controller (285)
- Zarządzanie danymi w komponentach (290)
- Wzorzec Page Controller (296)
- Wzorce Template View i View Helper (300)
- Warstwa logiki biznesowej (302)
- Wzorzec Transaction Script (303)
- Wzorzec Domain Model (306)
- Podsumowanie (309)
Rozdział 13. Wzorce bazodanowe (311)
- Warstwa danych (311)
- Wzorzec Data Mapper (312)
- Problem (312)
- Implementacja (312)
- Wzorzec Identity Map (325)
- Problem (325)
- Implementacja (325)
- Konsekwencje (328)
- Wzorzec Unit of Work (328)
- Problem (328)
- Implementacja (329)
- Konsekwencje (332)
- Wzorzec Lazy Load (332)
- Problem (332)
- Implementacja (333)
- Konsekwencje (334)
- Wzorzec Domain Object Factory (334)
- Problem (335)
- Implementacja (335)
- Konsekwencje (336)
- Wzorzec Identity Object (337)
- Problem (338)
- Implementacja (338)
- Konsekwencje (343)
- Wzorce Selection Factory i Update Factory (343)
- Problem (343)
- Implementacja (344)
- Konsekwencje (347)
- Co zostało z wzorca Data Mapper? (347)
- Podsumowanie (349)
CZĘŚĆ III. NARZĘDZIA (351)
Rozdział 14. Dobre (i złe) praktyki (353)
- Nie tylko kod (353)
- Pukanie do otwartych drzwi (354)
- Jak to zgrać? (355)
- Uskrzydlanie kodu (356)
- Standardy (357)
- Vagrant (358)
- Testowanie (358)
- Ciągła integracja (359)
- Podsumowanie (359)
Rozdział 15. Standardy PHP (361)
- Po co te standardy? (361)
- Jakie są standardowe rekomendacje PHP? (362)
- Dlaczego akurat PSR? (362)
- Rekomendacje PSR - dla kogo? (363)
- Kodowanie z klasą (363)
- Podstawowy standard kodowania PSR-1 (364)
- Rekomendacja stylu kodowania PSR-2 (366)
- Sprawdzanie i poprawianie kodu (368)
- PSR-4 - automatyczne ładowanie (370)
- Zasady, które są dla nas ważne (370)
- Podsumowanie (373)
Rozdział 16. Używanie i tworzenie komponentów PHP za pomocą Composera (375)
- Czym jest Composer? (375)
- Instalowanie Composera (376)
- Instalowanie (zbioru) pakietów (376)
- Instalowanie pakietu z poziomu wiersza poleceń (377)
- Wersje (377)
- Element require-dev (378)
- Composer i automatyczne ładowanie kodu (379)
- Tworzenie własnego pakietu (380)
- Dodawanie informacji o pakiecie (380)
- Pakiety systemowe (380)
- Dystrybucja za pośrednictwem repozytorium Packagist (381)
- Odrobina prywatności (384)
- Podsumowanie (385)
Rozdział 17. Zarządzanie wersjami projektuz systemem Git (387)
- Po co mi kontrola wersji? (387)
- Skąd wziąć klienta Git? (388)
- Obsługa repozytorium Git online (389)
- Konfigurowanie serwera Git (391)
- Tworzenie repozytorium zdalnego (391)
- Rozpoczynamy projekt (393)
- Klonowanie repozytorium (395)
- Wprowadzanie i zatwierdzanie zmian (396)
- Dodawanie i usuwanie plików i katalogów (399)
- Dodawanie pliku (399)
- Usuwanie pliku (399)
- Dodawanie katalogu (400)
- Usuwanie katalogów (400)
- Etykietowanie wersji (400)
- Rozgałęzianie projektu (401)
- Podsumowanie (407)
Rozdział 18. Testy jednostkowe z PHPUnit (409)
- Testy funkcjonalne i testy jednostkowe (409)
- Testowanie ręczne (410)
- PHPUnit (412)
- Tworzenie przypadku testowego (412)
- Metody asercji (414)
- Testowanie wyjątków (415)
- Uruchamianie zestawów testów (416)
- Ograniczenia (417)
- Atrapy i imitacje (419)
- Dobry test to oblany test (421)
- Testy dla aplikacji WWW (423)
- Przygotowanie aplikacji WWW do testów (424)
- Proste testy aplikacji WWW (426)
- Selenium (427)
- Słowo ostrzeżenia (432)
- Podsumowanie (434)
Rozdział 19. Automatyzacja instalacji z Phingiem (435)
- Czym jest Phing? (436)
- Pobieranie i instalacja pakietu Phing (436)
- Montowanie dokumentu kompilacji (437)
- Różnicowanie zadań kompilacji (438)
- Właściwości (440)
- Typy (446)
- Operacje (450)
- Podsumowanie (454)
Rozdział 20. Vagrant (455)
- Problem (455)
- Odrobina przygotowań (456)
- Wybór i instalacja środowiska Vagrant (456)
- Montowanie lokalnych katalogóww maszynie wirtualnej Vagranta (458)
- Zaopatrywanie maszyny wirtualnej (459)
- Konfigurowanie serwera WWW (460)
- Konfigurowanie MySQL (461)
- Konfigurowanie nazwy hosta (462)
- Kilka słów na koniec (463)
- Podsumowanie (464)
Rozdział 21. Ciągła integracja kodu (465)
- Czym jest ciągła integracja? (465)
- Przygotowanie projektu do ciągłej integracji (467)
- Instalowanie Jenkinsa (475)
- Instalowanie rozszerzeń Jenkinsa (475)
- Konfigurowanie klucza publicznego serwera Git (477)
- Instalowanie projektu (478)
- Pierwsza kompilacja (479)
- Konfigurowanie raportów (482)
- Automatyzacja kompilacji (484)
- Podsumowanie (486)
Rozdział 22. Obiekty, wzorce, narzędzia (487)
- Obiekty (487)
- Wybór (488)
- Hermetyzacja i delegowanie (488)
- Osłabianie sprzężenia (488)
- Zdatność do wielokrotnego stosowania kodu (489)
- Estetyka (489)
- Wzorce (490)
- Co dają nam wzorce? (490)
- Wzorce a zasady projektowe (491)
- Narzędzia (492)
- Testowanie (493)
- Standardy (493)
- Zarządzanie wersjami (493)
- Automatyczna kompilacja (instalacja) (494)
- System integracji ciągłej (494)
- Co pominęliśmy? (494)
- Podsumowanie (495)
DODATKI (497)
Dodatek A. Bibliografia (499)
- Książki (499)
- Publikacje (500)
- Witryny WWW (500)
Dodatek B. Prosty analizator leksykalny (503)
- Skaner (503)
- Analizator leksykalny (510)
Skorowidz (523)
Kategoria: | Webmaster |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-3554-7 |
Rozmiar pliku: | 8,5 MB |