Stručný obsah Úvod
21
Část I: Základy profesionálního vývoje 1. 2. 3. 4. 5. 6.
Úvod do objektově orientovaného programování UML (Unified Modeling Language) Použití objektů v praxi Návrhové vzory Kolekce Abstrakce databáze pomocí PDO
29 59 79 105 133 159
Část II: Pokročilé techniky vývoje 7. 8. 9. 10. 11. 12. 13. 14.
Object Relation Mapping Programování řízené událostmi Protokolování a ladění Tvorba a použití webových služeb Komunikace s uživateli Relace a autentizace Architektura aplikace Aplikační frameworky pro PHP
187 219 233 257 283 313 345 393
3
Stručný obsah
Část III: Skutečná případová studie 15. 16. 17. 18. 19. 20. 21.
Přehled projektu Projektový management Plánování projektu Architektura systému Vytvoření aplikace Zajištění kvality a testování Nasazení
421 429 449 463 473 569 587
Část IV: PHP až na hranici svých možností 22. 23. 24. 25.
Správa obsahu v PHP Zajištění vysoké propustnosti a dostupnosti Obhajoba PHP Vaše kariéra PHP profesionála
601 621 647 655
Část V: Přílohy A. B. C. D.
4
Verzování IDE pro PHP Ladění výkonu PHP Doporučovaný způsob instalace PHP
663 675 687 699
Rejstřík
709
Obsah Úvod Co tato kniha obsahuje Komu je tato kniha určena Co potřebujete pro použití této knihy Jak je tato kniha strukturována Část I: Základy profesionálního vývoje Část II: Pokročilé techniky vývoje Část III: Skutečná studie Část IV: PHP na plný plyn Přílohy Větší obrázek Konvence Zdrojový kód Errata Poznámka redakce českého vydání
21 21 22 22 23 23 23 24 24 24 25 25 25 26 26
Část I: Základy profesionálního vývoje Kapitola 1: Úvod do objektově orientovaného programování Co je to objektově orientované programování? Výhody OOP Příklad z praxe
29 29 30 30
5
Obsah Pochopení principů OOP Třídy Objekty Přidání metody Přidání atributu Řízení přístupu k členským proměnným Inicializace objektů Likvidace objektů Dědičnost Předefinování metod Zachování funkcionality rodiče Jak pracuje dědičnost Rozhraní Co rozhraní umožňují Jak rozhraní pracují Zapouzdření Změny OOP v PHP 6 Shrnutí
Kapitola 2: UML (Unified Modeling Language) Specifikace požadavků Rozhovor s klientem Diagramy případů užití Diagramy tříd Modelování domény Vztahy Implementace Diagramy aktivit Sekvenční diagramy Stavové diagramy Diagramy komponent a nasazení Shrnutí
Kapitola 3: Použití objektů v praxi Vytvoření správce kontaktů Diagramy jazyka UML ukázkové aplikace Třída PropertyObject Třídy jednotlivých typů kontaktních informací Třída DataManager Třídy Entity, Individual a Organization
6
31 32 32 34 34 36 38 39 42 47 49 51 52 52 53 54 56 57
59 59 60 61 62 62 65 67 70 72 74 75 76
79 79 80 84 87 91 93
Obsah Použití systému Shrnutí
Kapitola 4: Návrhové vzory Návrhový vzor kompozit Implementace Další úvahy Návrhový vzor pozorovatel Miniaplikace Třída DataSource Propojení pozorovatele a pozorovaného Další úvahy Návrhový vzor dekoratér Implementace Použití návrhového vzoru dekoratér Další úvahy Návrhový vzor fasáda Návrhový vzor stavitel Implementace Ředitel Další úvahy Shrnutí
Kapitola 5: Kolekce Účel třídy Collection Návrh třídy Collection Základy třídy Collection Metoda addItem Metody removeItem a getItem Další metody Použití třídy Collection Implementace líné instanciace Callback funkce Metoda setLoadCallback třídy Collection Použití třídy Collection Zdokonalení třídy Collection Shrnutí
Kapitola 6: Abstrakce databáze pomocí PDO PHP a databáze Podpora databází v PHP PHP a PostgreSQL
102 104
105 106 107 112 113 114 117 118 120 120 122 123 125 126 127 128 130 131 132
133 133 134 135 136 137 138 138 139 140 145 150 156 156
159 160 160 161
7
Obsah Rekapitulace Popis problému Obalové třídy Shrnutí Abstrakce databáze Co je zapotřebí Představení PDO Seznamte se s PDO Aktivace podpory PDO v PHP Připojení a odpojení Práce s PDO Třída PDO Provedení dotazu Třída PDOStatement Připravené dotazy Dotazy sloužící pro zápis Transakce a commitování Konstanty Zpracování chyb Pokročilé využití PDO Velké objekty Funkce specifické pro databázový systém Perzistentní spojení Uložené procedury Vytvoření singletonu Omezení PDO Syntaxe dotazu Emulace funkcí Datové zdroje nepoužívající SQL Za hranice PDO Shrnutí
161 165 165 166 167 167 167 167 167 168 169 169 170 171 171 173 174 175 175 177 178 179 179 180 181 181 182 182 183 183 183
Část II: Pokročilé techniky vývoje Kapitola 7: Object Relation Mapping Typy tříd Pomocné třídy Business třídy Business objekty detailně Návrh Prototyp Přidání datových vazeb Funkční business objekt
8
187 187 188 188 189 189 189 192 194
Obsah Zajištění splnění požadavků Jak to funguje Omezení Chytřejší přístup Líná instanciace Monitorování atributů Znovupoužitelnost Třída DataBoundObject Návrh Kód Ukázková implementace Jak to funguje Výhody Shrnutí
Kapitola 8: Programování řízené událostmi Seznámení s událostmi Použití OOP pro obsluhu událostí Návrh aplikace řízené událostmi Implementace aplikace Implementace zabezpečení Chvilka na zamyšlenou Shrnutí
199 202 204 205 205 205 205 206 206 207 211 213 217 218
219 220 221 221 223 227 230 231
Kapitola 9: Protokolování a ladění
233
Vytvoření protokolovacího mechanizmu Jednoduché protokolování Ukázková struktura souborového systému Třída Logger Rozšíření třídy Logger Vytvoření ladicího mechanizmu Shrnutí
233 233 234 235 241 253 256
Kapitola 10: Tvorba a použití webových služeb SOAP SOAP a PHP 6 Rozšíření SOAP pro PHP 6 Vytvoření klienta SOAP Co se děje pod povrchem Zpracování chyb na straně klienta SOAP Vytvoření serveru SOAP Vytvoření a registrace funkcí Vytvoření dokumentu WSDL
257 258 258 259 261 264 272 273 274 274
9
Obsah REST REST a PHP 6 Implementace klienta REST Vytvoření serveru REST Shrnutí
276 277 277 280 281
Kapitola 11: Komunikace s uživateli
283
Proč komunikovat? Důvody komunikace s uživatelem Za hranice webového prohlížeče Typy komunikace Všechny typy komunikace mají … Ne všechny typy komunikace mají … A co příjemci? Komunikace jako hierarchie tříd Třída Recipient – rychlý test OO uvažování Třída Communication Zasílání e-mailů uživatelům Vytvoření testovací verze Odeslání zprávy Použití šablon Použití MIME Další podtřídy třídy Communication Zprávy SMS Fax Další úvahy Blokující operace Doručitelnost Shrnutí
283 284 286 286 286 287 287 287 287 291 295 295 299 305 307 307 307 308 308 308 310 312
Kapitola 12: Relace a autentizace
313
Úvod do relací Jak pracuje protokol HTTP? Definice relace Zachování relace Zabezpečení relace Dobré zásady při práci s relacemi Implementace relací v PHP Základy relací v PHP Omezení základní funkcionality PHP pro podporu relací Vytvoření autentizační třídy Propojení správy relací PHP s databází Seznámení s třídou HTTPSession
10
314 314 316 316 319 323 325 325 327 328 328 329
Obsah Schéma databáze Skript HTTPSession.phpm Testování třídy HTTPSession Jak pracuje třída HTTPSession Výkonnost Závěrečné zhodnocení Shrnutí
330 331 335 338 341 342 343
Kapitola 13: Architektura aplikace
345
Seznámení s MVC Model Pohled Řadič MVC ve webových aplikacích MVC v PHP Sada tříd pro MVC Seznámení se sadou tříd Použití sady tříd Pár slov o PRG Sada tříd v praxi Skutečné šablony Rekapitulace běžných šablon Úskalí běžných šablon Skutečné šablony a systém Smarty Instalace systému Smarty Použití systému Smarty Pokročilé použití systému Smarty Modifikátory proměnných Kdy použít Smarty a kdy běžné šablony Trocha modelování Seznámení s testováním jednotek Seznámení s PHPUnit Proč se tím zatěžovat? Shrnutí
346 347 347 347 348 348 350 351 364 371 372 373 373 373 374 374 375 380 381 382 383 383 386 390 392
Kapitola 14: Aplikační frameworky pro PHP Seznámení s frameworky Struktura aplikace Oddělení kódu a zobrazovací logiky Validace Přepisování URL Perzistence formulářů Object Relation Mapping Abstrakce databáze
393 393 394 394 395 395 396 396 397
11
Obsah Servisní třídy Scénář případu užití Struktura databáze Ukázková aplikace Seznámení s Ulysses Instalace Ulysses Práce s Ulysses Nastavení Business objekty Servlety Zpracování uživatelského vstupu Perzistence Validace Rychlá kontrola Uložení vstupu Zpátky domů Rychlé shrnutí Další účastníci Prado Zend Framework Úvahy o nasazení Shrnutí
397 397 398 399 399 399 400 401 402 403 409 410 411 412 412 413 413 415 415 416 417 418
Část III: Skutečná případová studie Kapitola 15: Přehled projektu Svět widgetů Pozadí Světa widgetů Technická úroveň Finanční úroveň Politická úroveň Vy Je to skutečně o technologii? Přístup k vývoji Co to pro vás znamená Technologie Shrnutí
Kapitola 16: Projektový management Udělejte si domácí úkol Proč projekt vznikl? Pro koho je projekt? Jaká je historie projektu?
12
421 422 424 424 424 424 424 424 425 426 428 428
429 430 430 430 432
Obsah Jaké jsou předpoklady projektu? Obdržení formální poptávky Požadavky společnosti Rozsah Časový horizont Rozpočet Platební podmínky Budoucí plány Vzhled a chování Technologie Podpora Co dál? Vypracování nabídky Nabídka versus odhad ceny Nabídka versus specifikace Koho požádat o pomoc s vytvořením nabídky Kdy se vyplatí práce navíc Kdy říci ne Struktura nabídky Volba lidí Projektový manažer Account manažer Lead architekt Softwaroví architekti a inženýři Vývojáři uživatelského rozhraní Informační architekti Seniorští návrháři Grafici Prolínání rolí Pracovní návyky Role klienta Shrnutí
Kapitola 17: Plánování projektu Volba modelu Model vodopád Model spirála Rozhodnutí Běžné praktiky Fáze specifikace Fáze návrhu Fáze sestavení Fáze testování Předání
432 433 433 435 435 437 438 439 440 440 440 441 441 441 442 442 443 443 444 445 445 445 446 446 447 447 447 447 448 448 448 448
449 449 450 451 452 452 452 455 456 457 458
13
Obsah Metodologie programování Vývoj řízený testy Extrémní programování Řízení změn Revize specifikace Změny specifikace vzniklé po podpisu Problémy plynoucí z rozdílné interpretace Chyby nahlášené klientem Shrnutí
Kapitola 18: Architektura systému
458 458 459 461 461 461 462 462 462
463
Co je to architektura systému? Proč je to důležité? Co je třeba udělat? Určení business požadavků Určení hardwarových požadavků Webové servery Databázové servery Vyvažování zátěže Firewall Fyzické umístění a konektivita Určení CIR Výpočet měsíčního přenosu dat Úvahy nad místem v racku Úvahy nad sítí Úvahy nad úložištěm Údržba Shrnutí
463 463 464 465 466 466 466 466 467 468 468 469 469 470 470 470 471
Kapitola 19: Vytvoření aplikace
473
Zahájení projektu: Pondělí Pozadí projektu Ohodnocení požadavků Plánování vydání Zahájení práce Analýza požadavku 9 Sestavení testů PHPUnit Vytvoření přihlašovací obrazovky Další požadavek Opětovné provedení odhadu Úklid Refaktorování kódu
14
473 474 475 482 483 483 484 484 492 496 507 508 509
Obsah Dokončení iterace Požadavek 14: Změna týdne způsobí načtení uložených dat Požadavek 15: Nové položky v Hlášení o zkontaktovaných zákaznících Hlášení o cestovních výdajích Třída TravelExpenseItem Třída TravelExpenseWeek Pomocná datová struktura Další testy třídy TravelExpenseWeek Splnění testů třídy TravelExpenseWeek Dokončení Hlášení o cestovních výdajích Mock objekty Shrnutí
Kapitola 20: Zajištění kvality a testování Seznámení s QA Proč mířit vysoko? Co je to kvalita? Měřitelná a kvantifikovatelná kvalita Testování Testování jednotek Funkční testování Dokument pro funkční testování Testování zátěže Testování použitelnosti Stopování chyb Efektivní správa chyb se systémem Mantis Jak dostat ze systému Mantis co nejvíce Shrnutí
Kapitola 21: Nasazení Návrh vývojového prostředí Vývojové prostředí Vaše vzorové prostředí Ostré vzorové prostředí Produkční prostředí Vývojové databáze Průběh vývojových prací Automatická extrakce dat z repozitáře verzovacího systému Použití rsync Synchronizace serverů pomocí rsync Pár slov o FTP Shrnutí
515 515 517 525 527 530 534 534 537 549 562 567
569 569 570 571 571 574 574 575 575 576 576 577 578 585 585
587 587 588 589 589 590 591 592 594 595 597 598 598
15
Obsah
Část IV: PHP až na hranici svých možností Kapitola 22: Správa obsahu v PHP Co je to správa obsahu? Stručná historie správy obsahu Příklady systému CMS pro PHP Drupal Joomla! ExpressionEngine Frog CMS Vytvoření vlastního systému Problémy spojené s obsahem Administrátoři a oprávnění Pracovní tok Šablony Shrnutí
Kapitola 23: Zajištění vysoké propustnosti a dostupnosti Seznámení s termíny Vysoká dostupnost Vysoká propustnost Platformy Externí síť Interní síť Hardware Operační systém Webový server Aplikační server Databáze Architektura softwaru Faktory ovlivňující výkon a dostupnost Zátěž serveru Selhání komponent Zátěž sítě Selhání sítě Zmírnění následků Vyvažování zátěže Geografické vyvažování zátěže Seskupování síťových rozhraní Tolerance k chybám disku Záložní napájení Vícesegmentové topologie Clustering a replikace databází
16
601 601 603 604 604 606 609 611 612 613 615 616 617 619
621 621 621 622 623 623 624 625 625 626 627 627 628 628 629 630 630 630 630 630 632 633 634 635 635 638
Obsah Odhad provozu Cachování Generování obsahu Servery pro statický obsah Sítě pro doručování obsahu Příklady ze skutečného světa Flickr Wikipedia Shrnutí
Kapitola 24: Obhajoba PHP Malá režie Jednoduchost Netypované jazyky Redukovaná interpunkce Obecně uznávaná syntaxe Podpora napříč platformami Dostupnost Síla Shrnutí
Kapitola 25: Vaše kariéra PHP profesionála Motivace Vaše kariéra vývojáře Více než zkušenosti s webovým vývojem Soft skills Akademické dovednosti Společenské dovednosti Shrnutí
639 640 641 642 643 643 643 644 645
647 647 649 649 649 650 650 652 652 653
655 655 656 656 657 657 658 659
Část V: Přílohy Příloha A: Verzování Principy verzování Konkurenční vs exkluzivní verzování Topologie verzování Verzovací software Microsoft Visual SourceSafe CVS Subversion Další systémy
663 663 664 669 671 671 672 673 673
17
Obsah Pokročilé techniky verzování Větvení Značkování Komentáře Binární soubory Shrnutí
Příloha B: IDE pro PHP Volba prostředí IDE Zend Studio Komodo Další prostředí IDE a editory Shrnutí
Příloha C: Ladění výkonu PHP Úvod do problémů s výkonem Typy výkonnostních slabin Anatomie požadavku Určení slabin Úpravy pro dosažení vyššího výkonu Odstranění prostojů databáze Odstranění prostojů kódu Testování Preventivní opatření Tipy pro návrh výkonné architektury Testování zátěže Shrnutí
18
673 673 674 674 674 674
675 675 676 682 685 685
687 687 687 689 691 692 692 693 695 695 695 696 697
Obsah
Příloha D: Doporučovaný způsob instalace PHP Úvod do instalace PHP Vítězná platforma Vítězný webový server Vítězný databázový systém Vlastní instalace Stažení a instalace PostgreSQL Instalace podpůrných knihoven Instalace PHP a Apache Testování instalace Kdy je zapotřebí systém Windows Změna cest Externí knihovny Repozitář PEAR Shrnutí
Rejstřík
699 699 700 701 702 703 703 705 705 706 707 707 707 707 708
709
19
Úvod Tato kniha je určena vývojářům v jazyce PHP, kteří mají zájem o rozšíření a povýšení svých schopností s využitím funkcí a možností již šestého vydání tohoto programovacího jazyka. Zkušení vývojáři v prostředí .NET a J2EE (Java 2 Enterprise Edition) by samozřejmě taktéž měli být schopni rychle se zorientovat. Nezkušení vývojáři v jazyce PHP (popř. ti nemající žádné zkušenosti s vývojem softwaru) by však raději měli sáhnout po publikaci určené začátečníkům, jako např. PHP 6, MySQL, Apache Vytváříme webové aplikace (vydal Computer Press, 2009).
Co tato kniha obsahuje Krásnou vlastností jazyka PHP je jeho dostupnost a velmi plytká učicí křivka. Prakticky kdokoli se základním povědomím o počítačích může za pomoci tohoto jazyka začít vytvářet jednoduché dynamické weby. Bezesporu jsou to vlastnosti jako je tato, které vedly k použití jazyka PHP ve více jak 20 milionech webů na celém světe, a toto číslo se každým dnem stále o tisíce zvyšuje. Avšak právě tato přístupnost vedla k nedostatku uniformity při vývoji a z části také k absenci použití některých nejlepších praktik daného průmyslu. Jednoduše řečeno, není řada kódu PHP zas tak dobrá. V důsledku toho si tato kniha troufá pustit se dále než leží pouhá syntaxe a snaží se vám pomoci vytvářet kvalitnější software a současně v kratším čase. Pokud vám kdykoli někdo řekl, abyste nepoužili PHP, protože se nejedná o jazyk použitelný v enterprise prostředí, je tato kniha právě pro vás, protože se dozvíte, jak dokázat nepravdivost podobných tvrzení ze strany pochybovačů. Mnoho z toho, co se naučíte (ačkoli je text napsaný s ohledem na PHP6), se neomezuje pouze na jazyk PHP. Mnohé z technik vývoje je možné přímo přenést do dalších tradičních programovacích jazyků vysoké úrovně a zkušenosti, které zde získáte, vás budou provázet zbytkem celé vaší kariéry.
21
Úvod
Komu je tato kniha určena Tato kniha probírá některé z pokročilých technik práce s jazykem PHP, a proto předpokládá, že máte solidní základy v podobě vývoje aplikací v jazyce PHP. Nemusíte však nutně znát přímo jazyk PHP6, abyste s knihou mohli začít. Pokud stále zápolíte s PHP4, nemusíte se bát – ani vás nenechá tato kniha na holičkách. Jen se v takovém případě ujistěte, že postupujete přímo od začátku knihy. Podtrženo sečteno, autoři předpokládají, že máte něco, co se dá označit slovy funkční znalost PHP. Je-li tomu tak a toužíte po tom se naučit, jak se stát skutečným profesionálem v oblasti PHP, je tato kniha právě pro vás. Můžete být webovým vývojářem pracujícím u velké společnosti. Vaše společnost může s PHP pracovat roky, anebo chce udělat první nesmělé kroky směrem od prostředí .NET, Java nebo jiných vývojových platforem pro Web, ve snaze objevit bezpočet výhod spojených s PHP. Můžete být samostatným (či téměř samostatným) webovým profesionálem v jinak netechnicky zaměřené společnosti, kterému byl přiřazen úkol implementace nějakého velkého projektu – např. intranetu pro zaměstnance nebo nová webová identita společnosti – a vy tak hledáte vhodnou vývojovou platformu. Můžete také být jen zvědaví. Třeba jste studentem střední či vysoké školy, který se snaží doplnit si to, co se učíte ve škole, profesionálním kódem a technikami projektového managementu, převzatými přímo ze světa komerčního webového vývoje. Můžete mít znalosti v oblasti .NET nebo Java a na jazyk PHP jste zaslechli pozitivní odkazy a názory, že jeho poslední inkarnace z něj konečně činí skutečně důvěryhodné a profesionální vývojové prostředí pro web. Možné jste skeptičtí a zajímá vás, jestli je to, co jste o PHP6 zaslechli, pravda. Ať už jste kdokoli, pak znáte-li základy jazyka PHP a máte-li chuť se naučit mnohem více od lidí, kteří nejenom znají PHP jako své boty, ale také ho velice rádi používají a jsou za to dokonce placeni, pak je tato kniha pro vás.
Co potřebujete pro použití této knihy Zde je minimum toho, co budete potřebovat, abyste si z této knihy odnesli co nejvíce: Vývojovou stanici (s operačním systémem Windows, Mac OS X nebo Linux s běžným textovým editorem nebo vývojovým prostředím vaší volby) a webový prohlížeč pro vyzkoušení příkladů. Instalaci prostředí PHP a webového serveru Apache, jehož konfigurace by měla zhruba odpovídat té uvedené v příloze D. Většina příkladů v této knize vyžaduje databáze kompatibilní s PDO (PHP Data Objects) – příklady používají databáze MySQL a PostgreSQL. Ideálně byste měli také zkusit zajistit následující: Připojení k Internetu, protože v knize naleznete řadu adres URL a bezpochyby je budete chtít navštívit. Spoustu volného času, otevřenost novým nápadům a ochotu zkoušet nové věci.
22
Úvod
Jak je tato kniha strukturována Tato část kapitoly vás seznámí se strukturou této knihy. Detailní informace naleznete v obsahu knihy. Ačkoli můžete přeskakovat mezi jednotlivými kapitolami pro získání informací o požadovaných tématech, tak jak je zrovna potřebujete, nejste-li seznámení s konceptem objektově orientovaného programování (OOP – Object Oriented Programming), či možná ještě lépe jak je implementován v PHP6, pak byste zcela jistě měli začít přečtením první části knihy. Zbývající části knihy staví na zde uvedených informacích, takže je pro vás klíčové mít dobré základy OOP dříve, než se pustíte do složitějších témat.
Část I: Základy profesionálního vývoje Kniha začíná popisem základních konceptů OOP – jak jejich teoretickým základem tak jejich praktickou aplikací a implementací v PHP6. Tato část je zcela klíčová, protože pochopení zbytku této knihy je naprosto závislé na řádné znalosti OOP. Jistě si všimnete, že se na těchto stránkách nenachází jeden jediný řádek procedurálního kódu. Máte-li dobré základy prostředí .NET nebo J2EE, nemusíte zde trávit mnoho času – jen čas nezbytně nutný pro pochopení toho, jak se v jazyce PHP implementují standardní prvky OOP. Kniha se poté zaměřuje na další nástroje dostupné v PHP6 (avšak zřídka kdy používané méně zkušenými vývojáři), včetně jmenných prostorů, kolekcí a iterátorů a ukazuje jejich užitečnost v běžných návrzích. Žádná kniha pro profesionály by přirozeně nebyla kompletní bez diskuze databází a jejich role při vývoji enterprise aplikací. Seznámením s PDO v kapitole 7 pak tato diskuze pokračuje a představuje databázový systém PostgreSQL, vybraný pro příklady v této knize (ačkoli většina příkladů, se kterými se setkáte, je nezávislá na použitém databázovém systému, což znamená, že bude bez problémů pracovat s databázovými systémy MySQL, SQL Server a případně dalšími).
Část II: Pokročilé techniky vývoje Protože se první část kniha zaměřuje výhradně na klady a zápory high-end technik PHP6, druhá část má více filozofický charakter a ukazuje, jak nejlépe přistupovat k běžným výzvám spojeným s vývojem softwaru za pomoci těchto technik. To se někdy označuje jako architektura softwaru – efektivní návrh dobře vytvořeného softwaru. Kromě dalších témat se seznámíte také s technikami ORM (Object Relation Mapping), EDP (Event Driven Programming), technikami ladění a protokolování, komunikace s uživateli, správy relací, autentizace a návrhu a vývoje webových služeb. Kniha obsahuje také dvě vydatnější kapitoly týkající se aspektů technického návrhu na vyšší úrovni a také diskutuje nejrůznější dostupné frameworky pro vývoj v PHP (a jejich pro a proti), stejně tak v prvé řadě důvod jejich použití. Toto téma je důležité, protože jeden z těchto frameworků byl zvolen pro příklady ve zbytku knihy.
23
Úvod
Část III: Skutečná studie Vlastní zkušenost může těžko něco nahradit. Protože předchozí dvě části knihy byly teoretického rázu, tato třetí část se týká využití všech získaných informací v praxi. Dříve, než se ponoříte hlouběji, získáte základy projektového managementu, stejně jako architektury systémů a sítí. Poté v praxi použijete techniky architektury softwaru a pokročilého vývoje, které jste se naučili v prvních dvou částech, vytvořením aplikace od základů za pomoci frameworku MVC. Poté, co dokončíte vývoj aplikace, dozvíte se o důležitosti řízení kvality (QA – quality assurance), testování a toho, jak k němu přistupovat u středně velkých až velkých projektů, stejně jako o často přehlíženém tématu, kterým je uvedení vašeho projektu v život (jinak známé jako nasazení).
Část IV: PHP na plný plyn Finální část knihy vám, coby aspirujícímu profesionálovi v oblasti PHP, poskytne nestranné rady od vývojářů jako jste vy – lidí, kteří tam byli, zažili to a koupili si tričko. Tato část se zabývá čtyřmi „žhavými tématy“, která jsou předmětem mnoha online i offline debat mezi těmi, již používají PHP každý den svého pracovního života. Po určité nezaujaté analýze se dozvíte fakta, která budete potřebovat k tomu, abyste dělali svá vlastní rozhodnutí, stejně jako vytvářeli své vlastní erudované názory na věc. Dozvíte se o systémech CMS (Content Management System) a CMF (Content Management Framework), založených na PHP – jak prodávaných, tak vlastnoručně vytvořených. Uvidíte, jak může PHP hrát hlavní roli na webech s vysokými nároky na dostupnost a propustnost, jako je např. Flickr nebo Facebook. Dozvíte se také, jak přesvědčit své skeptické kolegy nebo klienty o tom, že PHP dokáže nahradit prostředí .NET nebo Java a zvítězit nad nimi na celé čáře. V neposlední řadě se podíváte také na cestu v kariéře, která před vámi coby profesionálem PHP může ležet – na cestu, o níž se doufá, že vás přesvědčí zůstat u tohoto jazyka na dlouhý čas.
Přílohy Přílohy jsou domovem některých důležitých témat, jež by zcela nepasovala do kterékoli z předchozích čtyřech částí. V příloze A se dozvíte o řízení verzí – proč je důležitá a jak ji u velkých projektů implementovat pomocí CVS nebo SVN (Subversion). V příloze B se setkáte s řadou integrovaných vývojových prostředí (IDE – Integrated Development Environments), které vás přimějí odložit stranou váš starý textový editor a nahradit ho řešením ušitým na míru pro jazyk PHP. Příloha C diskutuje vyladění vašich aplikací v PHP pro vyšší výkon, tak abyste z nich i na serverech s pomalejším hardwarem dostali maximum, zatímco příloha D nabízí jednoduché rady, jak nakonfigurovat PHP a Apache v operačních systémech Linux, Mac OS X a Windows.
24
Úvod
Větší obrázek Upřímně doufáme, že nám, autorům, pomůžete ve zvýšení laťky pro kvalitu softwaru nacházejícího se jak v profesionálních produkčních prostředích, tak v projektech na Internetu. Profesionálně a filozoficky, nikdo z nás neprogramuje sám, takže možná společně můžeme pomoci naši existenci učinit trochu lepší.
Konvence Ve snaze pomoci vám získat z textu co nejvíce a lépe sledovat co se děje jsme v této knize použili několik konvencí. Ohraničení jako je toto obsahuje důležité informace, které není radno zapomenout a jež jsou přímo spojené s okolním textem.
Tipy, triky a poznámky k aktuálnímu textu jsou odsazeny a vysázeny odlišným typem písma.
Co
se stylů přímo v textu týká: Kurzívou jsou vyznačena důležitá slova při jejich představení. Stisky kláves na klávesnici jsou zapsané takto: Ctrl+A. Názvy souborů, adresy URL a kód v textu je vyznačený takto: trida.metoda. Kód je prezentován dvěma způsoby:
V příkladech kódu jsou nové a důležité řádky vyznačené šedým pozadím. Šedé pozadí se nepoužívá u kódu, který není v aktuálním kontextu tak důležitý, anebo se již objevil dříve.
Zdrojový kód Při práci na příkladech v této knize můžete buď veškerý kód psát ručně, nebo sáhnout po souborech se zdrojovým kódem, které doprovázejí tuto knihu. Všechny zdrojové soubory k této knize (v angličtině) najdete na adrese www.wrox.com. Na webu jednoduše vyhledejte název knihy (zadejte název do vyhledávacího pole, nebo se podívejte do seznamu knih) a na stránce knihy klepněte na odkaz Download Code, čímž zahájíte stahování zdrojových kódů pro tuto knihu. Protože může existovat více knih s podobným názvem, nejjednodušší je hledat knihu podle čísla ISBN. Originál této knihy má číslo ISBN 978-0-470-39509-7.
Zdrojové kódy českého vydání knihy si můžete stáhnout na adrese http://knihy.cpress.cz/ k1720. Najdete je pod odkazem Soubory ke stažení.
25
Úvod
Errata Vynakládáme veškeré úsilí, aby se v textu a v kódu neobjevovaly žádné chyby. Nikdo ovšem není dokonalý a člověk je tvor chybující. Najdete-li v některé z našich knih chybu, překlep či nefunkční část kódu, budeme vám velmi vděčni za upozornění. Zašlete-li nám upozornění na takovou chybu, můžete ostatním čtenářům ušetřit hodiny frustrace a nám zase pomůžete zlepšit kvalitu předkládaných informací. Stránku tiskových chyb této knihy najdete na adrese www.wrox.com. Zadejte název knihy do vyhledávacího pole, nebo se podívejte do seznamu knih. Poté na stránce knihy klepněte na odkaz Book Errata. Na této stránce najdete všechny tiskové chyby odhalené čtenáři nebo redaktory nakladatelství Wrox. Úplný seznam knih obsahující odkazy na stránky tiskových chyb najdete na adrese www.wrox.com/misc-pages/booklist.shtml. Pokud vámi nalezenou chybu na stránce tiskových chyb nenajdete, podívejte se na stránku www.wrox.com/contact/techsupport.shtml a vyplňte formulář, jehož prostřednictvím nám pošlete
informaci o nalezené chybě. My ji zkontrolujeme, a bude-li oprávněná, umístíme zprávu na stránku tiskových chyb. V následujících vydáních knihy pak chybu automaticky opravíme.
Poznámka redakce českého vydání Nakladatelství a vydavatelství Computer Press, které pro vás tuto knihu přeložilo, stojí o zpětnou vazbu a bude na vaše podněty a dotazy reagovat. Můžete se obrátit na následující adresy: Computer Press, redakce PC literatury Spielberk Office Centre Holandská 8 639 00 Brno nebo
[email protected] Další informace a případné opravy českého vydání knihy najdete na internetové adrese http://knihy.cpress.cz/k1720. Prostřednictvím uvedené adresy můžete též naší redakci zaslat komentář nebo dotaz týkající se knihy. Na vaše reakce se srdečně těšíme.
26