2. 2
Agenda
• Charakteristika PHP
• Výhody a nevýhody PHP
• Základy syntaxe
• PHP knihovny a frameworky
• PHP a TNPW2
• Internet, doporučená literatura
3. 3
Historie PHP
• PHP (původní význam Personal Home Page, dnes PHP Hypertext Preprocesor)
je jednoduchý skriptovací jazyk určený hlavně pro vývoj webových aplikací
• Byl vytvořen v roce 1995, původním autorem je Rasmus Lerdorf
• Jádro PHP bylo později několikrát přepsáno (Z. Suraski, A. Gutmans), aktuálně se používá
tzv. ZEND Engine (r .2000, od PHP4)
• Aktuální hlavní verze je PHP5 (r. 2004, ZEND Engine II.), 5.3.10 (2/2012)
• V současnosti jsou jednotlivé verze PHP vydávány pod PHP licencí >> je možné získat
a upravit zdrojové kódy (v jazyku C), licence je free a není plně kompatibilní s GPL
http://www.php.net (oficiální web)
http://en.wikipedia.org/wiki/PHP_License
4. 4
Základní charakteristika PHP
• Kromě webových aplikací je možné používat PHP např. pro psaní skriptů příkazové řádky
nebo pomocí PHP–GTK vytvářet desktopové aplikace
• V 2/2 90. let bylo PHP spolu s ASP nejrozšířenější a nejpopulárnější platformou pro
tvorbu webových aplikací, na rozdíl od ASP to platí i dnes
• PHP je interpretovaný jazyk – nepřekládá se do binární podoby (pro desktop ano) nebo
mezijazyka (typu bytecode >> Java nebo MSIL >> .NET), ale při každém požadavku se
kompiluje (vytváří) tzv. opcode
• Některé PHP frameworky (eAccelerator, Zend Optimizer, ionCube, APC, Nette) umějí
opcode spravovat v Cache paměti serveru >> zvýšení výkonu a odezvy aplikace.
• Dynamicky typovaný jazyk – datový typ proměnné se určí až v okamžiku přiřazení
http://www.linuxsoft.cz/php/ (český tutoriál)
http://www.zend.com/products
http://zdrojak.root.cz/clanky/nette-framework-cache/
http://nette.org (Nette framework)
5. 5
PHP a webové aplikace – jak to funguje?
• Jazyk PHP doplňuje (X)HTML kód webových stránek o výkonné příkazy
• Aby WWW server od sebe odlišil požadavky na obyčejné (X)HTML stránky a PHP skripty,
ukládají se PHP skripty do souborů s příponou *.php, *.phtml, *.php3 ...
• Tyto přípony lze v konfiguraci webového serveru namapovat!
• Pokud WWW server obdrží požadavek na soubor, který končí na některou z uvedených
přípon, tak…
1. Předá tento požadavek systému PHP ,
2. ten se postará o provedení všech příkazů v souboru a výsledek vrátí zpět WWW serveru,
3. který jej odešle jako odpověď klientovi.
• Nejčastěji je odpovědí (výsledkem) obyčejná (X)HTML stránka, ale může jí být např.
obrázek, PDF nebo Flash animace
6. 6
Agenda
Charakteristika PHP
• Výhody a nevýhody PHP
• Základy syntaxe
• PHP knihovny a frameworky
• PHP a TNPW2
• Internet, doporučená literatura
7. 7
Výhody PHP
• Jednoduchý = snadná výuka i použití, rychlý výsledek
• Výkonný
• Nízké náklady na provoz
• Nativní rozhraní pro mnoho druhů databází
• Jsou k dispozici zdrojové kódy a knihovny pro nejčastější úlohy
• Umožňuje objektový přístup (zlepšeno v PHP5)
• Přenositelný (multiplatformní, jen některé příkazy jsou svázány s vybraným OS)…
▫ nezávislost na OS (Unix, Linux, Windows)
▫ nezávislost na použitém webovém serveru, např.
CGI skript pro téměř libovolný server, nově FastCGI pro IIS7
modul WWW serveru Apache
ISAPI modul pro IIS (OS Windows)
• Je podporován většinou freehostingových serverů, a to včetně možnosti využití databáze
(MySQL, PostgreSQL)
• Volná licence
• Komunita
• Je možné vytvářet webové služby nebo RIA aplikace (např. v kombinaci s JavaScriptem)
8. 8
Nevýhody PHP – I.
• Nezapomeňte, PHP je jednoduchý skriptovací jazyk! Pro některé typy webových aplikací
(obecně 24/7 MC aplikace) je nevhodný!
• PHP nemá žádnou oficiální specifikaci, je popsán pouze svoji implementací
• V porovnání s „kompilovanými“ technologiemi (ASP.NET, Java) je většinou PHP
u složitějších aplikací pomalejší (na příkladu typu Hello World to nepoznáte!)
• U rozsáhlých aplikací (hodně knihoven) má PHP poměrně velkou spotřebu paměti,
alokovanou paměť občas chybně uvolňuje (tzv. memory leaks chyba)
• PHP zatím nemá podporu persistence objektů, neumí multithread per request
• Umožňuje programátorům dělat v kódu věci, které jsou problematické, neefektivní
a někdy velmi nebezpečné, např.
▫ Nenutí programátora oddělovat data a kód (špatný návyk),
▫ umožňuje zpracování formulářových dat od uživatelů automatickým generováním proměnných
(není to bezpečné –> dříve – do verze 4.2 – to byla jedna z „výhod“ PHP, dnes se o tom taktně mlčí),
▫ občas „divně“ přetypovává proměnné (např. řetězec >> číslo),
▫ umožňuje v kódu práci s výjimkami, ale programátoři to moc nepoužívají
9. 9
Nevýhody PHP – II.
• Umožňuje pracovat s neinicializovanou proměnnou (lze vypnout v konfiguraci)
>> někdo to ale může považovat za výhodu
• Zatím nativně nepodporuje Unicode (až od verze PHP6)
• Je poměrně dost nekompatibilní mezi jednotlivými verzemi, a to včetně změn výchozích
nastavení některých parametrů!
• Vestavěné základní bezpečnostní mechanismy PHP lze snadno (když to umíte) obejít –
použití frameworku sníží bezpečnostní rizika
• Vývojový tým PHP často mění plány – viz jejich kouzla se slovem „deprecated“
• Jednoduchost a použitelnost PHP může být paradoxně také nevýhodou >> kdejaký BFU
je schopný nějak splácat webovou aplikaci a velmi rychle pak podlehne přesvědčení, že
je webový guru
http://latrine.dgx.cz/php-surprise
http://latrine.dgx.cz/php-memory-leaks
http://myego.cz/item/php-vytvari-i-dnes-banda-pitomcu
http://phpfashion.com/escapovani-definitivni-prirucka
http://ondra.zizka.cz/stranky/programovani/php/vyhody_a_nevyhody_php.texy
10. 10
Agenda
Charakteristika PHP
Výhody a nevýhody PHP
• Základy syntaxe
• PHP knihovny a frameworky
• PHP a TNPW2
• Internet, doporučená literatura
11. 11
Základy syntaxe PHP
• K oddělení příkazů PHP od HTML kódu slouží dvojice znaků <? a ?>, uvnitř kterých jsou
příkazy uzavřeny
• V XHTML kódu je třeba použít jako oddělovače dvojici <?php a ?>
• Mohou existovat PHP stránky, které nemají žádný (X)HTML kód!
<?php příkazy PHP ?>
• PHP používá syntaxi jazyku C (podobně např. C#, Java, JavaScript), něco i z dalších jazyků
• Každý program (skript) v PHP je složen ze sekvence příkazů oddělených ";"
• Mezi příkazy můžeme vkládat libovolný počet mezer, tabelátorů a konců řádků. To
umožňuje přehledné zformátování zdrojového kódu
• PHP rozlišuje velikost malých a velkých písmen u názvů proměnných. Při zápisu příkazů
a volání funkcí je to jedno
• Ke zjištění aktuální verze a konfigurace PHP na serveru slouží příkaz PHPInfo()
12. 12
Agenda
Charakteristika PHP
Výhody a nevýhody PHP
Základy syntaxe
• PHP knihovny a frameworky
• PHP a TNPW2
• Internet, doporučená literatura
13. 13
PHP knihovny a frameworky
• V PHP můžete při tvorbě webových aplikací využívat nejrůznější knihovny a frameworky,
které poskytují komplexní řešení nejčastějších problémů, např.
▫ Autentizaci uživatelů,
▫ přístup k datům v databázích (dibi, NotORM, doctrine),
▫ unit testy (PHPUnit),
▫ generování výstupu v různých formátech (obrázky, PDF) apod.
• Řada PHP frameworků umožňuje důsledné oddělení aplikační vrstvy od prezentační
• U malých projektů (quick&win) se moc často nepoužívají, ale u větších projektů
s týmovým vývojem jsou velmi užitečné
• PEAR (PHP Extension and Application Repository)
Balík cca 250 open source knihoven a rozšíření roztříděných tematicky do několika
kategorií (např. databáze, souborový systém, HTTP, matematika, text, xml, web services)
• Některé PHP frameworky: Smarty, Teng, Nette, Zend Framework
http://www.root.cz/serialy/velky-test-php-frameworku/
14. 14
Bootstrap
• Hodně PHP frameworků používá tzv. bootstrap (zavaděč)
• Přes tento soubor (může jich být v aplikaci více) jsou tunelovány všechny requesty
• Obvykle neobsahuje žádný HTML kód, ale zavádí a nastavuje např.
▫ Konfigurační direktivy
▫ Session, cookies
▫ Caching
▫ Databázová napojení
▫ Globální proměnné a konstanty
▫ Routing adres
▫ XML/RPC
http://www.serversidemagazine.com/php/bootstrap-php-code
15. 15
Proč používat PHP frameworky ?
• Ušetříte nepředstavitelné peníze za vývoj vlastních řešení
• Využíváte osvědčenou technologii, odladěnou komunitou
• Minimalizujete bezpečnostní rizika (ty mohou poškodit reputaci i klienty)
• Zásadním způsobem zefektivníte vývoj
• Výrazně roste jejich konkurenceschopnost a ziskovost
• A pozor – nemusíte zaměstnance školit na svůj proprietární systém!
Zdroj: http://phpfashion.com/jak-snadno-psat-spickove-webove-aplikace
Doporučené PHP frameworky
• http://framework.zend.com/
• http://nette.org/cs/
16. 16
Agenda
Charakteristika PHP
Výhody a nevýhody PHP
Základy syntaxe
PHP knihovny a frameworky
• PHP a TNPW2
• Internet, doporučená literatura
17. 17
PHP a TNPW2
• Praktické práci s technologií PHP se v případě zájmu můžete věnovat při řešení úkolů
na cvičeních TNPW2
• Při správném použití je PHP technologie vhodná i pro závěrečné zápočtové projekty!
• Každý student, který si chce PHP vyzkoušet, si sám zajistí účet na nějakém vhodném
freehostingovém serveru s podporou PHP a databází (školní servery jsou problém)
• Vzhledem k rozsahu problematiky tvorby webových aplikací (nejen v PHP) důrazně
doporučuji každému studentovi samostudium!
• Žádný „rychlokurz PHP“ ani jiná „nalejvárna“ Vám nepomůže. Kdo se chce naučit aspoň
základy, musí sám zkoušet a hledat. Když si nebudete vědět rady, poradím Vám
• Pro PHP je dostatek odborné literatury i zdrojů na Internetu, naučte se je využívat!
• U zápočtových projektů implementovaných v PHP povinně použijte nějaký framework!
18. 18
Agenda
Charakteristika PHP
Výhody a nevýhody PHP
Základy syntaxe
PHP knihovny a frameworky
PHP a TNPW2
• Internet, doporučená literatura
20. 20
Doporučená literatura
• Kosek, Jiří – PHP tvorba interaktivních internetových aplikací – podrobný průvodce, Grada
1999 (klasika, z toho se učil v ČR asi každý už není moc aktuální)
• Lacko, Luboslav – PHP a MySQL – Hotová řešení, CP Books 2005
• Gutmans, Andi; Bakken, Stig Saether; Rethans, Derrick – Mistrovství v PHP5, Computer
Press 2007
• Zandstra, Matt – PHP Objects, Patterns, and Practice, Third Edition, Apress 2010
• Pope, Keith – Zend Framework 1.8 Web Application Development, Packt Publishing 2009
21. 21
Souhrn
Charakteristika PHP
Výhody a nevýhody PHP
Základy syntaxe
PHP knihovny a frameworky
PHP a TNPW2
Internet, doporučená literatura