Mistrz PHP. Pisz nowoczesny kod - Shafik D. - [ebook].pdf

(3282 KB) Pobierz
Dla Kevina, który nauczył mnie wszystkiego, co wiem,
i dla wszystkich osób, które we mnie wierzą
— Lorna
Dla dziadka Lesliego, za nauczenie mnie, jak być
dobrym człowiekiem, i dla mojej żony Frances, za miłość
do człowieka, jakim się stałem dzięki dziadkowi
— Davey
Dla moich rodziców i żony, którzy mnie zawsze wspierali
i wierzyli we mnie, a także dla moich dzieci i przyjaciół,
którzy są dla mnie niewyczerpanym źródłem inspiracji
— Matthew
Lorna Mitchell
Lorna Jane Mitchell zajmuje się doradztwem w zakresie stosowania języka PHP. Mieszka w Leeds,
w Wielkiej Brytanii. Po ukończeniu studiów na wydziale elektroniki rozpoczęła bogatą w doświad-
czenia karierę zawodową. Specjalizuje się w przetwarzaniu danych oraz w tworzeniu interfejsów
programistycznych. Mitchell aktywnie udziela się w społeczności języka PHP, organizuje konfe-
rencje, kieruje grupą użytkowników PHP North West, przewodniczy w pracach nad projektem
open source Joind.in oraz często przemawia na różnych zjazdach. Jej artykuły zostały opublikowane
m.in. w takich pismach, jak „.net magazine” i „php | architect”. Mitchell prowadzi bloga pod adresem:
http://lornajane.net.
Davey Shafik
Davey Shafik od ponad dziesięciu lat pracuje z językiem PHP, narzędziami LAMP i oczywiście
używa języków HTML, CSS i JavaScript. Opublikował mnóstwo książek i artykułów i występował
na wielu konferencjach. Zajmuje się także działalnością edukacyjną. Jest wziętym fotografem.
Mieszka na Florydzie wraz z żoną i sześcioma kotami.
Matthew Turland
Matthew Turland używa języka PHP od 2002 roku. Zdobył certyfikaty Zend Certified Engineer
z PHP 5 i Zend Framework. Pisuje artykuły do czasopisma „php | architect”, jest współautorem
dwóch książek:
php | architect’s Guide to Web Scraping with PHP
(NanoBooks, Toronto 2010)
oraz tej, którą właśnie czytasz. Często występuje także na konferencjach php | tek, Confoo oraz
ZendCon. Lubi pracować nad projektami open source w języku PHP, m.in.: Zend Framework,
PHPUnit oraz Phergie. Prowadzi bloga pod adresem:
http://matthewturland.com.
Luke Cawood
Po prawie dziesięciu latach programowania w języku PHP Luke Cawood postanowił nawiązać
współpracę z firmą SitePoint, aby razem rozwijać platformę
http://99designs.com,
skupiającą naj-
większą na świecie społeczność crowdsourcingową. Cawood fascynuje się technologiami siecio-
wymi i przenośnymi. Kiedy nie programuje, chodzi na festiwale muzyczne i zajmuje się ogólnie
wszystkim, co ma związek z jedzeniem. Czasami napisze coś na swoim blogu dostępnym pod ad-
resem:
http://lukecawood.com.
Tom Museth
Tom Museth zakochał się w programowaniu podczas pisania gier w języku BASIC na komputerze
Commodore 64, a ich własności użytkowe testował na niezbyt entuzjastycznie nastawionych do
tego pomysłu członkach rodziny. Dojście do przekonania, że programowanie sieciowe jest jego
przeznaczeniem, zajęło mu aż 16 lat, podczas których pracował jako dziennikarz i redaktor pro-
dukcyjny. W szczególności interesują go języki: jQuery, PHP, HTML 5 oraz CSS 3. Museth z wiel-
kim zainteresowaniem śledzi również nowinki w świecie urządzeń przenośnych. Żeby się odprężyć,
czyta książki, wyleguje się na plaży albo wędkuje.
Spis treści
Wstęp ........................................................................................................................13
Adresaci książki ..........................................................................................................13
Zawartość książki .......................................................................................................14
Strona internetowa książki .........................................................................................16
Podziękowania ...........................................................................................................16
Konwencje typograficzne ............................................................................................17
Wskazówki, uwagi i ostrzeżenia .................................................................................18
Rozdział 1.
Programowanie obiektowe
.................................................... 19
Dlaczego programowanie obiektowe .........................................................................19
Terminologia obiektowa .......................................................................................19
Wprowadzenie do programowania obiektowego .......................................................20
Deklarowanie klas ................................................................................................20
Konstruktory .........................................................................................................21
Tworzenie obiektów .............................................................................................21
Automatyczne
ładowanie
.....................................................................................22
Używanie obiektów ..............................................................................................23
Własności i metody statyczne ...............................................................................23
Obiekty i przestrzenie nazw ..................................................................................24
Dziedziczenie ..............................................................................................................27
Obiekty i funkcje .........................................................................................................29
Określanie typów parametrów ..............................................................................29
Polimorfizm ..........................................................................................................29
Obiekty i referencje ...............................................................................................30
Przekazywanie obiektów jako parametrów funkcji ................................................31
Płynne interfejsy ...................................................................................................32
Słowa kluczowe public, private i protected .................................................................33
Modyfikator public ...............................................................................................33
Modyfikator private ..............................................................................................33
Modyfikator protected ..........................................................................................34
Wybór zakresu dostępności ..................................................................................34
Kontrola dostępności przy użyciu metod sprawdzających i ustawiających .............35
Magiczne metody __get i __set ............................................................................36
Interfejsy ....................................................................................................................37
Interfejs Countable z biblioteki SPL .......................................................................37
Liczenie obiektów .................................................................................................37
Deklarowanie i używanie interfejsów ...................................................................38
Identyfikowanie obiektów i interfejsów ................................................................39
6
Mistrz PHP. Pisz nowoczesny kod
Wyjątki .......................................................................................................................40
Obsługa wyjątków ................................................................................................40
Dlaczego należy używać wyjątków .......................................................................41
Zgłaszanie wyjątków ............................................................................................41
Rozszerzanie klas wyjątków ..................................................................................41
Przechwytywanie wybranych typów wyjątków .....................................................42
Ustawianie globalnej procedury obsługi wyjątków ...............................................43
Wywołania zwrotne .............................................................................................44
Metody magiczne — zaawansowane wiadomości .....................................................44
Metody __call() i __callStatic() ..............................................................................45
Drukowanie zawartości obiektów przy użyciu metody __toString() .......................46
Serializacja obiektów ............................................................................................46
Osiągnięte cele ...........................................................................................................48
Rozdział 2.
Bazy danych
................................................................................ 49
Dane trwałe i aplikacje sieciowe .................................................................................49
Sposoby składowania danych .....................................................................................50
Budowanie serwisu z przepisami na podstawie bazy MySQL ......................................51
Tworzenie tabel ....................................................................................................51
Rozszerzenie PDO .......................................................................................................53
Łączenie
się z bazą MySQL przy użyciu PDO ..........................................................53
Pobieranie danych z tabel w bazie ........................................................................54
Tryby pobierania danych ......................................................................................54
Parametry i instrukcje preparowane ......................................................................55
Wiązanie wartości i zmiennych z instrukcjami preparowanymi ..............................57
Wstawianie wiersza i pobieranie jego identyfikatora ............................................58
Sprawdzanie liczby wstawionych, zmienionych i usuniętych rekordów .................59
Usuwanie danych .................................................................................................60
Obsługa błędów w PDO .............................................................................................60
Obsługa błędów związanych z przygotowywaniem zapytań .................................60
Obsługa błędów związanych z wykonywaniem zapytań .......................................61
Obsługa błędów związanych z pobieraniem danych .............................................62
Zaawansowane funkcje PDO ......................................................................................63
Transakcje a PDO ..................................................................................................63
Procedury składowane i PDO ................................................................................64
Projektowanie bazy danych ........................................................................................65
Klucze główne i indeksy ........................................................................................65
Polecenie MySQL Explain ......................................................................................65
Złączenia wewnętrzne ..........................................................................................69
Złączenia zewnętrzne ............................................................................................70
Funkcje agregujące i grupowanie .........................................................................71
Normalizacja danych ............................................................................................72
Podsumowanie ..........................................................................................................74
Zgłoś jeśli naruszono regulamin