PHP. Obiekty, wzorce, narzędzia. Wydanie IV - ebook
PHP. Obiekty, wzorce, narzędzia. Wydanie IV - ebook
Twój przewodnik po obiektowym PHP!
Język PHP przebył długą drogę od swoich początków do obecnego poziomu rozwoju. Dziś jest pełnoprawnym, obiektowym językiem programowania, wciąż zdobywającym większe zaufanie i używanym w coraz większych projektach. Jeżeli znasz ten język od dawna, lecz nie jesteś przekonany, że nadaje się on do zaawansowanych zastosowań, albo dopiero zaczynasz karierę i potrzebujesz szybkiego wprowadzenia w świat obiektów czy wzorców projektowych w języku PHP, to jest właśnie książka dla Ciebie!
Sięgnij po nią i przekonaj się na własnej skórze, że PHP to dojrzały język, który nie ustępuje konkurentom. W trakcie lektury poznasz podstawowe zagadnienia związane z programowaniem obiektowym, a następnie przejdziesz do nauki zaawansowanej obsługi obiektów w języku PHP. Kolejne rozdziały zostały poświęcone między innymi wzorcom projektowym, dobrym i złym praktykom, zastosowaniu PEAR i Pyrus oraz sposobom automatycznego generowania dokumentacji i tworzenia kodu wysokiej jakości dzięki testom automatycznym. Książka ta jest doskonałą lekturą dla każdego programisty PHP chcącego podnieść swoje kwalifikacje.
Dzięki tej książce:
- poznasz podstawowe zagadnienia związane z programowaniem obiektowym
- nauczysz się operować na obiektach w PHP
- poznasz przydatne wzorce projektowe
- unikniesz typowych problemów
- przygotujesz testy jednostkowe
Poznaj zaawansowane możliwości języka PHP!
Spis treści
O autorze (13)
O recenzencie technicznym (15)
Podziękowania (17)
Wprowadzenie (19)
Rozdział 1. PHP - projektowanie i zarządzanie (21)
- Problem (21)
- PHP a inne języki programowania (22)
- O książce (24)
- Obiekty (24)
- Wzorce (24)
- Narzędzia (25)
- Nowości w czwartym wydaniu (26)
- Podsumowanie (26)
Rozdział 2. Obiekty (27)
- Nieoczekiwany sukces obiektów w PHP (27)
- PHP/FI - u zarania języka (27)
- PHP3 - składniowy lukier (27)
- Cicha rewolucja - PHP4 (28)
- PHP5 - nieuchronne zmiany (29)
- Debata obiektowa - za czy przeciw? (30)
- Podsumowanie (30)
Rozdział 3. Obiektowy elementarz (31)
- Klasy i obiekty (31)
- Pierwsza klasa (31)
- Pierwszy obiekt (lub dwa) (32)
- Definiowanie składowych klasy (33)
- Metody (35)
- Metoda konstrukcji obiektu (36)
- Typy argumentów metod (37)
- Typy elementarne (38)
- Typy obiektowe (40)
- Dziedziczenie (42)
- Problemy związane z dziedziczeniem (42)
- Stosowanie dziedziczenia (46)
- Zarządzanie dostępem do klasy - słowa public, private i protected (50)
- Podsumowanie (54)
Rozdział 4. Zaawansowana obsługa obiektów (55)
- Metody i składowe statyczne (55)
- Składowe stałe (58)
- Klasy abstrakcyjne (59)
- Interfejsy (61)
- Cechy typowe (62)
- Zadanie dla cech typowych (62)
- Definiowanie i stosowanie cechy typowej (63)
- Stosowanie wielu cech typowych (64)
- Łączenie cech z interfejsami (64)
- Unikanie kolizji nazw metod za pomocą słowa insteadof (65)
- Aliasy metod cech typowych (67)
- Cechy typowe z metodami statycznymi (68)
- Dostęp do składowych klasy włączającej (68)
- Definiowanie metody abstrakcyjnej cechy typowej (69)
- Zmiana dostępności metod cech typowych (70)
- Późne wiązanie statyczne: słowo static (71)
- Obsługa błędów (73)
- Wyjątki (75)
- Klasy i metody finalne (80)
- Przechwytywanie chybionych wywołań (81)
- Definiowanie destruktorów (86)
- Wykonywanie kopii obiektów (87)
- Reprezentacja obiektu w ciągach znaków (90)
- Wywołania zwrotne, funkcje anonimowe i domknięcia (91)
- Podsumowanie (94)
Rozdział 5. Narzędzia obiektowe (95)
- PHP a pakiety (95)
- Pakiety i przestrzenie nazw w PHP (95)
- Automatyczne wczytywanie kodu (103)
- Klasy i funkcje pomocnicze (105)
- Szukanie klasy (106)
- Badanie obiektów i klas (107)
- Pozyskiwanie ciągu pełnej nazwy klasy (108)
- Badanie metod (108)
- Badanie składowych (110)
- Badanie relacji dziedziczenia (110)
- Badanie wywołań metod (110)
- Interfejs retrospekcji - Reflection API (112)
- Zaczynamy (112)
- Pora zakasać rękawy (112)
- Badanie klasy (114)
- Badanie metod (116)
- Badanie argumentów metod (117)
- Korzystanie z retrospekcji (118)
- Podsumowanie (121)
Rozdział 6. Obiekty a projektowanie obiektowe (123)
- Czym jest projektowanie? (123)
- Programowanie obiektowe i proceduralne (124)
- Odpowiedzialność (127)
- Spójność (127)
- Sprzęganie (127)
- Ortogonalność (128)
- Zasięg klas (128)
- Polimorfizm (129)
- Hermetyzacja (131)
- Nieważne jak (132)
- Cztery drogowskazy (132)
- Zwielokrotnianie kodu (133)
- Przemądrzałe klasy (133)
- Złota rączka (133)
- Za dużo warunków (133)
- Język UML (133)
- Diagramy klas (134)
- Diagramy sekwencji (139)
- Podsumowanie (141)
Rozdział 7. Czym są wzorce projektowe? Do czego się przydają? (143)
- Czym są wzorce projektowe? (143)
- Wzorzec projektowy (145)
- Nazwa (145)
- Problem (146)
- Rozwiązanie (146)
- Konsekwencje (146)
- Format wzorca według Bandy Czworga (146)
- Po co nam wzorce projektowe? (147)
- Wzorzec projektowy definiuje problem (147)
- Wzorzec projektowy definiuje rozwiązanie (147)
- Wzorce projektowe są niezależne od języka programowania (147)
- Wzorce definiują słownictwo (148)
- Wzorce są wypróbowane (148)
- Wzorce mają współpracować (149)
- Wzorce promują prawidła projektowe (149)
- Wzorce są stosowane w popularnych frameworkach (149)
- Wzorce projektowe a PHP (149)
- Podsumowanie (150)
Rozdział 8. Wybrane prawidła wzorców (151)
- Olśnienie wzorcami (151)
- Kompozycja i dziedziczenie (152)
- Problem (152)
- Zastosowanie kompozycji (155)
- Rozprzęganie (157)
- Problem (157)
- Osłabianie sprzężenia (158)
- Kod ma używać interfejsów, nie implementacji (160)
- Zmienne koncepcje (161)
- Nadmiar wzorców (161)
- Wzorce (161)
- Wzorce generowania obiektów (162)
- Wzorce organizacji obiektów i klas (162)
- Wzorce zadaniowe (162)
- Wzorce korporacyjne (162)
- Wzorce baz danych (162)
- Podsumowanie (162)
Rozdział 9. Generowanie obiektów (163)
- Generowanie obiektów - problemy i rozwiązania (163)
- Wzorzec Singleton (167)
- Problem (167)
- Implementacja (168)
- Konsekwencje (169)
- Wzorzec Factory Method (170)
- Problem (170)
- Implementacja (172)
- Konsekwencje (174)
- Wzorzec Abstract Factory (174)
- Problem (174)
- Implementacja (175)
- Konsekwencje (177)
- Prototyp (178)
- Problem (178)
- Implementacja (179)
- Ależ to oszustwo! (181)
- Podsumowanie (182)
Rozdział 10. Wzorce elastycznego programowania obiektowego (183)
- Strukturalizacja klas pod kątem elastyczności obiektów (183)
- Wzorzec Composite (183)
- Problem (184)
- Implementacja (186)
- Konsekwencje (189)
- Composite - podsumowanie (191)
- Wzorzec Decorator (192)
- Problem (192)
- Implementacja (194)
- Konsekwencje (197)
- Wzorzec Facade (197)
- Problem (197)
- Implementacja (199)
- Konsekwencje (199)
- Podsumowanie (200)
Rozdział 11. Reprezentacja i realizacja zadań (201)
- Wzorzec Interpreter (201)
- Problem (201)
- Implementacja (202)
- Ciemne strony wzorca Interpreter (209)
- Wzorzec Strategy (209)
- Problem (209)
- Implementacja (211)
- Wzorzec Observer (214)
- Implementacja (215)
- Wzorzec Visitor (220)
- Problem (220)
- Implementacja (221)
- Wady wzorca Visitor (225)
- Wzorzec Command (226)
- Problem (226)
- Implementacja (226)
- Podsumowanie (230)
Rozdział 12. Wzorce korporacyjne (231)
- Przegląd architektury (231)
- Wzorce (232)
- Aplikacje i warstwy (232)
- Małe oszustwo na samym początku (235)
- Wzorzec Registry (235)
- Implementacja (236)
- Warstwa prezentacji (244)
- Wzorzec Front Controller (244)
- Wzorzec Application Controller (253)
- Wzorzec Page Controller (264)
- Wzorce Template View i View Helper (268)
- Warstwa logiki biznesowej (270)
- Wzorzec Transaction Script (270)
- Wzorzec Domain Model (274)
- Podsumowanie (277)
Rozdział 13. Wzorce bazodanowe (279)
- Warstwa danych (279)
- Wzorzec Data Mapper (280)
- Problem (280)
- Implementacja (280)
- Wzorzec Identity Map (293)
- Problem (293)
- Implementacja (294)
- Konsekwencje (296)
- Wzorzec Unit of Work (297)
- Problem (297)
- Implementacja (297)
- Konsekwencje (301)
- Wzorzec Lazy Load (301)
- Problem (301)
- Implementacja (302)
- Konsekwencje (303)
- Wzorzec Domain Object Factory (303)
- Problem (303)
- Implementacja (304)
- Konsekwencje (305)
- Wzorzec Identity Object (306)
- Problem (306)
- Implementacja (307)
- Konsekwencje (311)
- Wzorce Selection Factory i Update Factory (312)
- Problem (312)
- Implementacja (312)
- Konsekwencje (315)
- Co zostało z wzorca Data Mapper? (316)
- Podsumowanie (318)
Rozdział 14. Dobre (i złe) praktyki (319)
- Nie tylko kod (319)
- Pukanie do otwartych drzwi (320)
- Jak to zgrać? (321)
- Uskrzydlanie kodu (322)
- Dokumentacja (323)
- Testowanie (324)
- Ciągła integracja (325)
- Podsumowanie (325)
Rozdział 15. PEAR i Pyrus (327)
- Czym jest PEAR? (327)
- Pyrus (328)
- Instalowanie pakietu (329)
- Kanały PEAR (331)
- Korzystanie z pakietu z PEAR (333)
- Obsługa błędów w pakietach PEAR (334)
- Tworzenie własnych pakietów PEAR (337)
- Plik package.xml (337)
- Składniki pakietu (338)
- Element contents (339)
- Zależności (342)
- Dookreślanie instalacji - phprelease (343)
- Przygotowanie pakietu do dystrybucji (344)
- Konfigurowanie własnego kanału PEAR (345)
- Podsumowanie (348)
Rozdział 16. Generowanie dokumentacji - phpDocumentor (349)
- Po co nam dokumentacja? (349)
- Instalacja (350)
- Generowanie dokumentacji (350)
- Komentarze DocBlock (352)
- Dokumentowanie klas (354)
- Dokumentowanie plików (354)
- Dokumentowanie składowych (355)
- Dokumentowanie metod (357)
- Namespace support (357)
- Tworzenie odnośników w dokumentacji (359)
- Podsumowanie (361)
Rozdział 17. Zarządzanie wersjami projektu z systemem Git (363)
- Po co mi kontrola wersji? (363)
- Skąd wziąć klienta Git? (364)
- Konfigurowanie serwera Git (365)
- Tworzenie repozytorium zdalnego (365)
- Rozpoczynamy projekt (367)
- Klonowanie repozytorium (369)
- Wprowadzanie i zatwierdzanie zmian (370)
- Dodawanie i usuwanie plików i katalogów (373)
- Dodawanie pliku (373)
- Usuwanie pliku (374)
- Dodawanie katalogu (374)
- Usuwanie katalogów (374)
- Etykietowanie wersji (375)
- Rozgałęzianie projektu (375)
- Podsumowanie (379)
Rozdział 18. Testy jednostkowe z PHPUnit (381)
- Testy funkcjonalne i testy jednostkowe (381)
- Testowanie ręczne (382)
- PHPUnit (384)
- Tworzenie przypadku testowego (384)
- Metody asercji (385)
- Testowanie wyjątków (386)
- Uruchamianie zestawów testów (387)
- Ograniczenia (388)
- Atrapy i imitacje (389)
- Dobry test to oblany test (392)
- Testy dla aplikacji WWW (394)
- Przygotowanie aplikacji WWW do testów (395)
- Proste testy aplikacji WWW (396)
- Selenium (398)
- Słowo ostrzeżenia (402)
- Podsumowanie (404)
Rozdział 19. Automatyzacja instalacji z Phing (405)
- Czym jest Phing? (406)
- Pobieranie i instalacja pakietu Phing (406)
- Montowanie dokumentu kompilacji (407)
- Różnicowanie zadań kompilacji (408)
- Właściwości (410)
- Typy (416)
- Operacje (420)
- Podsumowanie (424)
Rozdział 20. Ciągła integracja kodu (425)
- Czym jest ciągła integracja? (425)
- Przygotowanie projektu do ciągłej integracji (427)
- Jenkins (436)
- Instalowanie Jenkinsa (436)
- Instalowanie rozszerzeń Jenkinsa (438)
- Konfigurowanie klucza publicznego serwera Git (439)
- Instalowanie projektu (439)
- Pierwsza kompilacja (441)
- Konfigurowanie raportów (441)
- Automatyzacja kompilacji (444)
- Podsumowanie (446)
Rozdział 21. Obiekty, wzorce, narzędzia (447)
- Obiekty (447)
- Wybór (448)
- Hermetyzacja i delegowanie (448)
- Osłabianie sprzężenia (448)
- Zdatność do wielokrotnego stosowania kodu (449)
- Estetyka (449)
- Wzorce (450)
- Co dają nam wzorce? (450)
- Wzorce a zasady projektowe (451)
- Narzędzia (452)
- Testowanie (453)
- Dokumentacja (453)
- Zarządzanie wersjami (453)
- Automatyczna kompilacja (instalacja) (454)
- System integracji ciągłej (454)
- Co pominęliśmy? (454)
- Podsumowanie (455)
Dodatek A. Bibliografia (457)
- Książki (457)
- Publikacje (458)
- Witryny WWW (458)
Dodatek B. Prosty analizator leksykalny (461)
- Skaner (461)
- Analizator leksykalny (468)
Skorowidz (481)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-9181-4 |
Rozmiar pliku: | 7,3 MB |