PHP. Zaawansowane programowanie. Vademecum profesjonalisty - Helion
Tytuł oryginału: Advanced PHP Programming
Tłumaczenie: Włodzimierz Gajda, Paweł Gonera, Radosław Meryk, Jacek Smycz
ISBN: 83-7361-589-X
stron: 624, Format: B5, okładka: twarda
Data wydania: 2004-10-12
Księgarnia: Helion
Cena książki: 75,00 zł
PHP to obecnie jeden z najpopularniejszych języków programowania służących do tworzenia aplikacji internetowych. Od początku jego istnienia wykorzystywano go do tworzenia dynamicznych witryn WWW. Dynamiczny rozwój sprawił, że możliwości jego zastosowania znacznie się poszerzyły. Obecnie używa się PHP do tworzenia aplikacji, które jeszcze niedawno wydawały się niemożliwe do napisania w tym języku. Początkowo wykorzystywany przez grono entuzjastów, z czasem stał się stabilną i dobrze udokumentowaną platformą programistyczną, liczącą się na rynku.
Książka "PHP. Zaawansowane programowanie. Vademecum profesjonalisty" to pozycja dla tych, którzy chcą zostać ekspertami w dziedzinie tworzenia aplikacji w PHP. Opisuje najbardziej zaawansowane mechanizmy języka, pozwalające na zastosowanie go w złożonych aplikacjach. Przedstawia techniki programowania obiektowego, testowania jednostek leksykalnych, zagadnienia bezpieczeństwa, techniki buforowania oraz sposoby tworzenia skalowalnych aplikacji internetowych. W książce omówiono również dostrajanie wydajności oraz tworzenie rozszerzeń PHP. Wszystkie, nawet najbardziej skomplikowane kwestie zostały opisane w przejrzysty sposób i zilustrowane kompletnymi przykładami zastosowania w prawdziwych aplikacjach.
- Styl kodowania
- Programowanie obiektowe i wzorce projektowe
- Obsługa błędów
- Korzystanie z szablonów Smarty
- Testowanie modułów
- Zarządzanie wersjami - system CVS
- Techniki buforowania
- Dostęp do baz danych
- Autoryzacja użytkowników
- Tworzenie środowiska rozproszonego
- Wykorzystanie usług sieciowych
- Wydajność aplikacji
- Tworzenie rozszerzeń PHP
Osoby które kupowały "PHP. Zaawansowane programowanie. Vademecum profesjonalisty", wybierały także:
- PHP 8 Programming Tips, Tricks and Best Practices 157,37 zł, (29,90 zł -81%)
- Domain-Driven Design in PHP 135,91 zł, (29,90 zł -78%)
- PHP Microservices 135,91 zł, (29,90 zł -78%)
- Drupal 8 Module Development. Second edition 124,58 zł, (29,90 zł -76%)
- Mastering The Faster Web with PHP, MySQL, and JavaScript 124,58 zł, (29,90 zł -76%)
Spis treści
PHP. Zaawansowane programowanie. Vademecum profesjonalisty -- spis treści
O Autorze (13)
Słowo wstępne (15)
Wstęp (17)
Część I Implementacja i metodologie programowania (23)
Rozdział 1. Styl kodowania (25)
- Wybór wygodnego stylu programowania (26)
- Formatowanie kodu i układ (26)
- Wcięcia (26)
- Długość wiersza (28)
- Zastosowanie odstępów (29)
- Zalecenia na temat SQL (29)
- Instrukcje sterujące (30)
- Nazewnictwo symboli (35)
- Zmienne faktycznie globalne oraz stałe (36)
- Zmienne długowieczne (38)
- Zmienne tymczasowe (38)
- Nazwy wieloczłonowe (39)
- Nazwy funkcji (39)
- Nazwy klas (40)
- Nazwy metod (40)
- Spójność nazw (40)
- Dopasowanie nazw zmiennych do nazw schematu (40)
- Unikanie mylącego kodu (41)
- Unikanie korzystania ze skróconych znaczników otwierających (42)
- Unikanie korzystania z funkcji echo do tworzenia kodu HTML (42)
- Rozsądne korzystanie z nawiasów (43)
- Dokumentacja (43)
- Dokumentacja wewnątrz kodu (44)
- Dokumentacja API (45)
- Dalsze lektury (49)
Rozdział 2. Programowanie obiektowe poprzez wzorce projektowe (51)
- Wstęp do programowania obiektowego (52)
- Dziedziczenie (53)
- Hermetyzacja (54)
- Atrybuty i metody statyczne (klasowe) (55)
- Metody specjalne (56)
- Krótkie wprowadzenie do wzorców projektowych (57)
- Wzorzec Adaptor (58)
- Wzorzec Template (62)
- Polimorfizm (63)
- Interfejsy i podpowiadanie typów (65)
- Wzorzec Factory (67)
- Wzorzec Singleton (68)
- Przeciążanie (70)
- SPL i iteratory (75)
- __call () (80)
- __autoload() (82)
- Dalsze lektury (83)
Rozdział 3. Obsługa błędów (85)
- Obsługa błędów (87)
- Wyświetlanie błędów (88)
- Rejestrowanie błędów (89)
- Ignorowanie błędów (90)
- Reagowanie na błędy (90)
- Obsługa błędów zewnętrznych (92)
- Wyjątki (94)
- Wykorzystanie hierarchii wyjątków (97)
- Przykład zastosowania wyjątków (99)
- Wyjątki kaskadowe (104)
- Obsługa błędu działania konstruktora (107)
- Instalowanie wysokopoziomowej procedury obsługi wyjątków (108)
- Kontrola poprawności danych (110)
- Kiedy korzystać z wyjątków? (114)
- Dalsze lektury (114)
Rozdział 4. Implementacja w PHP - szablony i sieć WWW (115)
- Smarty (116)
- Instalowanie Smarty (116)
- Pierwszy szablon Smarty (118)
- Pod maską skompilowanych szablonów (118)
- Struktury sterujące Smarty (119)
- Funkcje Smarty i więcej (122)
- Buforowanie w Smarty (124)
- Zaawansowane funkcje Smarty (126)
- Tworzenie własnego systemu szablonów (127)
- Dalsze lektury (128)
Rozdział 5. Implementacja w PHP - samodzielne skrypty (131)
- Wprowadzenie do interfejsu wiersza poleceń PHP (CLI) (133)
- Obsługa wejścia-wyjścia (133)
- Analizowanie argumentów wiersza poleceń (136)
- Tworzenie procesów potomnych i zarządzanie nimi (138)
- Zamykanie współdzielonych zasobów (139)
- Współdzielenie zmiennych (139)
- Porządkowanie po procesach potomnych (139)
- Sygnały (141)
- Tworzenie demonów (146)
- Zmiana katalogu roboczego (147)
- Zmniejszanie uprawnień (147)
- Gwarantowanie wyłączności (148)
- Łączymy wszystko razem - kontrolowanie usług (148)
- Dalsze lektury (157)
Rozdział 6. Testowanie modułów (159)
- Wprowadzenie do testowania modułów (160)
- Tworzenie testów dla automatycznego testowania modułów (161)
- Pierwszy test modułu (161)
- Dodawanie wielu testów (162)
- Tworzenie wewnętrznych i zewnętrznych testów modułów (163)
- Testy wewnątrz modułu (164)
- Testy na zewnątrz modułu (165)
- Jednoczesne uruchamianie wielu testów (166)
- Dodatkowe funkcje w PHPUnit (168)
- Tworzenie opisowych komunikatów błędów (168)
- Dodawanie większej liczby warunków testowych (169)
- Zastosowanie metod setUp() oraz tearDown() (171)
- Dodawanie nasłuchów (171)
- Wykorzystanie interfejsu graficznego (173)
- Projektowanie sterowane testami (173)
- Kalkulator oceny Flescha (174)
- Testowanie klasy Word (175)
- Raport błędów (182)
- Testowanie modułów w środowisku WWW (184)
- Dalsze lektury (186)
Rozdział 7. Zarządzanie środowiskiem programistycznym (187)
- Kontrola wersji (188)
- Podstawy CVS (189)
- Modyfikacja plików (192)
- Badanie różnic między plikami (193)
- Mechanizmy usprawniające pracę wielu programistów na tym samym projekcie (195)
- Znaczniki symboliczne (197)
- Gałęzie (198)
- Zarządzanie środowiskiem produkcyjnym oraz programistycznym (199)
- Zarządzanie pakietami (203)
- Tworzenie pakietów i przenoszenie kodu (204)
- Tworzenie pakietów plików binarnych (207)
- Tworzenie pakietu Apache (208)
- Tworzenie pakietu PHP (209)
- Dalsze lektury (209)
Rozdział 8. Projektowanie dobrego API (211)
- Projektowanie zapewniające możliwości rozszerzania i łatwość modyfikacji (212)
- Umieszczenie logiki w funkcjach (212)
- Tworzenie prostych klas i funkcji (214)
- Przestrzenie nazw (214)
- Zmniejszanie sprzężeń (216)
- Kodowanie defensywne (217)
- Wprowadzenie standardowych konwencji (218)
- Użycie technik oczyszczania danych (218)
- Dalsze lektury (220)
Część II Buforowanie (221)
Rozdział 9. Strojenie wydajności zewnętrznej (223)
- Techniki dostrajania na poziomie języka (223)
- Bufory kompilatora (223)
- Optymalizatory (226)
- Akceleratory HTTP (227)
- Odwrotne serwery proxy (228)
- Dostrajanie systemu operacyjnego (233)
- Bufory proxy (234)
- Aplikacje PHP przystosowane do wykorzystania buforowania (234)
- Kompresja (239)
- Dalsze lektury (240)
- Dokumenty RFC (240)
- Bufory kompilatora (240)
- Bufory proxy (240)
- Kompresja (241)
Rozdział 10. Buforowanie komponentów danych (243)
- Właściwości buforowania (243)
- Identyfikacja komponentów danych, które nadają się do buforowania (245)
- Wybór właściwej strategii: klasy własne czy biblioteczne? (245)
- Buforowanie wyników (246)
- Buforowanie w pamięci (248)
- Bufor w postaci pojedynczego pliku (248)
- Zarządzanie rozmiarem bufora (249)
- Współbieżny dostęp i spójność buforów (250)
- Buforowanie z wykorzystaniem plików DBM (256)
- Współbieżny dostęp i spójność buforów (257)
- Weryfikacja bufora i zarządzanie (257)
- Buforowanie we współdzielonej pamięci (262)
- Buforowanie z wykorzystaniem plików cookie (263)
- Zarządzanie rozmiarem bufora (267)
- Współbieżny dostęp i spójność buforów (268)
- Integracja buforowania w kodzie aplikacji (268)
- Buforowanie stron głównych (270)
- Wykorzystanie modułu mod_rewrite serwera Apache w celu wykonania inteligentnego buforowania (276)
- Buforowanie części stron (280)
- Implementacja bufora zapytań (282)
- Dalsze lektury (284)
Rozdział 11. Ponowne wykorzystanie obliczeń (285)
- Wstęp z przykładem - ciągi Fibonacciego (285)
- Buforowanie danych do wielokrotnego użytku wewnątrz żądań (291)
- Buforowanie wielokrotnie wykorzystywanych danych pomiędzy żądaniami (293)
- Wielokrotne wykorzystywanie obliczeń w PHP (297)
- Wyrażenia PCRE (297)
- Liczniki rozmiarów tablic (297)
- Dalsze lektury (298)
Część III Aplikacje rozproszone (299)
Rozdział 12. Współpraca z bazami danych (301)
- Działanie baz danych i zapytań (302)
- Analiza zapytań przy użyciu EXPLAIN (305)
- Wyznaczanie zapytań wymagających profilowania (306)
- Wzorce dostępu do bazy danych (308)
- Zapytania ad hoc (309)
- Metoda aktywnego rekordu (309)
- Metoda odwzorowania (312)
- Metoda zintegrowanego odwzorowania (317)
- Dostrajanie dostępu do bazy danych (318)
- Ograniczanie zbioru wyników (318)
- Opóźniona inicjalizacja (320)
- Dalsze lektury (323)
Rozdział 13. Autoryzacja użytkowników oraz bezpieczeństwo sesji (325)
- Proste schematy uwierzytelniania (326)
- Proste uwierzytelnianie HTTP (327)
- Przesyłanie danych identyfikacyjnych w zapytaniu (327)
- Pliki cookie (328)
- Rejestrowanie użytkowników (329)
- Ochrona haseł (329)
- Zabezpieczenie haseł przed atakami socjotechnicznymi (332)
- Utrzymanie uwierzytelniania: sprawdzenie, czy w dalszym ciągu komunikujemy się z tą samą osobą (333)
- Sprawdzenie, czy wartość $_SERVER ['REMOTE_IP'] pozostaje taka sama (333)
- Sprawdzenie, czy wartość $_SERVER ['USER_AGENT'] pozostaje taka sama (334)
- Wykorzystanie niezaszyfrowanych plików cookie (334)
- Zalecane rozwiązania (334)
- Przykładowa implementacja uwierzytelniania (336)
- Pojedyncze logowanie (341)
- Implementacja techniki pojedynczego logowania (343)
- Dalsze lektury (348)
Rozdział 14. Obsługa sesji (349)
- Przechowywanie danych sesyjnych po stronie klienta (350)
- Implementacja sesji przy użyciu plików cookie (351)
- Nieco lepsza pułapka na myszy (353)
- Przechowywanie danych sesyjnych po stronie serwera (354)
- Śledzenie identyfikatora sesji (356)
- Krótkie wprowadzenie do sesji w PHP (358)
- Niestandardowe funkcje obsługi sesji (360)
- Usuwanie niepotrzebnych danych (365)
- Przechowywanie stanu sesji po stronie serwera oraz po stronie klienta (366)
Rozdział 15. Tworzenie środowiska rozproszonego (369)
- Czym jest klaster? (369)
- Projektowanie klastrów - podstawy (372)
- Planowanie niepowodzeń (373)
- Zgodna współpraca (373)
- Dystrybucja zawartości w klastrze (375)
- Skalowanie poziome (376)
- Klastry wyspecjalizowane (377)
- Buforowanie w środowisku rozproszonym (377)
- Bufory scentralizowane (380)
- W pełni zdecentralizowany bufor wykorzystujący Spread (382)
- Skalowanie baz danych (385)
- Tworzenie aplikacji korzystających z konfiguracji główny-podległy (388)
- Alternatywy replikacji (390)
- Alternatywy systemów zarządzania relacyjnymi bazami danych (391)
- Dalsze lektury (392)
Rozdział 16. RPC - współpraca ze zdalnymi usługami (393)
- XML-RPC (394)
- Tworzenie serwera: implementacja interfejsu MetaWeblog (396)
- Automatyczne wykrywanie usług XML-RPC (400)
- SOAP (402)
- WSDL (404)
- Zamiana system.load w usługę SOAP (406)
- Usługi WWW Amazon i typy złożone (409)
- Generowanie kodu proxy (411)
- Porównanie SOAP i XML-RPC (411)
- Dalsze lektury (412)
- SOAP (412)
- XML-RPC (412)
- Dzienniki WWW (413)
- Dostępne publicznie usługi WWW (413)
Część IV Wydajność (415)
Rozdział 17. Testy wydajności aplikacji - testowanie całości aplikacji (417)
- Pasywna identyfikacja wąskich gardeł (418)
- Generatory obciążenia (420)
- ab (420)
- httperf (421)
- Daiquiri (424)
- Dalsze lektury (424)
Rozdział 18. Profilowanie (425)
- Co jest potrzebne w programie profilującym PHP? (426)
- Programy profilujące (426)
- Instalacja i zastosowanie APD (427)
- Przykład śledzenia (429)
- Profilowanie większej aplikacji (431)
- Identyfikacja ogólnego braku efektywności (436)
- Usuwanie zbytecznej funkcjonalności (438)
- Dalsze lektury (443)
Rozdział 19. Syntetyczne testy wydajności - sprawdzanie bloków kodu i funkcji (445)
- Podstawy testowania wydajności (446)
- Tworzenie szablonu testów wydajności (447)
- Zestaw testów wydajności PEAR (448)
- Tworzenie funkcji testujących (450)
- Dodawanie randomizacji danych do wszystkich iteracji (451)
- Usuwanie kosztów funkcji testujących (452)
- Dodawanie własnych informacji czasowych (453)
- Tworzenie testów bezpośrednich (457)
- Przykłady testów wydajności (457)
- Dopasowanie znaków na początku ciągu (458)
- Rozszerzenia makr (459)
- Interpolacja i łączenie (464)
Część V Możliwości rozszerzania (467)
Rozdział 20. Działanie maszyny Zend i PHP (469)
- Jak działa maszyna Zend: kody i tablice operacji (470)
- Zmienne (475)
- Funkcje (479)
- Klasy (480)
- Mechanizmy obsługi obiektów (482)
- Tworzenie obiektów (483)
- Inne ważne struktury (483)
- Cykl życiowy żądania PHP (485)
- Warstwa SAPI (486)
- Jądro PHP (488)
- Interfejs rozszerzeń PHP (489)
- Interfejs Zend Extension (490)
- Jak pasują do siebie wszystkie części? (492)
- Dalsze lektury (492)
Rozdział 21. Rozszerzanie PHP - część I (495)
- Podstawy rozszerzania (496)
- Tworzenie zrębu rozszerzenia (496)
- Budowa i włączanie rozszerzenia (499)
- Wykorzystanie funkcji (500)
- Zarządzanie typami i pamięcią (502)
- Analiza ciągów (505)
- Manipulacja typami (506)
- Testowanie typów, konwersje i mechanizmy dostępu (511)
- Korzystanie z zasobów (514)
- Zwracanie błędów (519)
- Wykorzystanie punktów zaczepienia modułów (519)
- Przykład: osłona klienta Spread (527)
- MINIT (529)
- MSHUTDOWN (529)
- Funkcje modułu (529)
- Wykorzystanie modułu Spread (535)
- Dalsze lektury (536)
Rozdział 22. Rozszerzanie PHP - część II (537)
- Implementacja klas (537)
- Tworzenie nowej klasy (538)
- Definiowanie właściwości klasy (539)
- Dziedziczenie (541)
- Definiowanie metod klasy (542)
- Definiowanie konstruktorów klas (544)
- Zgłaszanie wyjątków (545)
- Wykorzystanie obiektów zdefiniowanych przez użytkownika oraz prywatnych zmiennych (546)
- Wykorzystanie metod factory (549)
- Tworzenie i implementacja interfejsów (550)
- Pisanie własnych procedur obsługi sesji (551)
- Interfejs API obsługi strumieni (555)
- Dalsze lektury (565)
Rozdział 23. Tworzenie modułów SAPI oraz rozszerzanie maszyny Zend (567)
- Interfejsy SAPI (567)
- CGI SAPI (568)
- Interfejs Embed SAPI (577)
- Filtry wejściowe interfejsu SAPI (578)
- Modyfikacja i introspekcja mechanizmu maszyny Zend (583)
- Ostrzeżenia jako wyjątki (584)
- Program przetwarzający kod operacyjny (586)
- APD (589)
- APC (590)
- Wykorzystanie wywołań rozszerzenia Zend (590)
- Praca domowa (593)
Dodatki (595)
Skorowidz (597)