SlideShare a Scribd company logo
1 of 20
TNPW2 2010/2011 05 – PHP Mgr. Lukáš Vacek lukas.vacek@uhk.cz
Agenda5 ,[object Object]
Výhody a nevýhody PHP
Základy syntaxe
PHP knihovny a frameworky
PHP a TNPW2
Internet, doporučená literatura2
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 RasmusLerdorf.  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í verze je PHP5 (r. 2004, ZEND Engine II.). 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 3
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 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, ZendOptimizer, ionCube, APC, Nette) umějí opcode spravovat v Cache paměti serveru –> zvýšení výkonu a odezvy aplikace.  Je 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) 4
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… Předá tento požadavek systému PHP , ten se postará o provedení všech příkazů v souboru a výsledek vrátí zpět WWW serveru,  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. 5
Agenda5 ,[object Object]
Výhody a nevýhody PHP
Základy syntaxe
PHP knihovny a frameworky
PHP a TNPW2
Internet, doporučená literatura6
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í)…  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 Je možné vytvářet webové služby nebo RIA aplikace (např. v kombinaci s JavaScriptem) 7
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 Worldto 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. memoryleaks 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í  8
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 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 – v tom pomůže použití frameworku. 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 9
Agenda5  ,[object Object]

More Related Content

More from Lukáš Vacek (20)

TNPW2-2016-07
TNPW2-2016-07TNPW2-2016-07
TNPW2-2016-07
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
TNPW2-2016-04
TNPW2-2016-04TNPW2-2016-04
TNPW2-2016-04
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
TNPW2-2016-01
TNPW2-2016-01TNPW2-2016-01
TNPW2-2016-01
 
TNPW2-2014-01
TNPW2-2014-01TNPW2-2014-01
TNPW2-2014-01
 
TNPW2-2014-06
TNPW2-2014-06TNPW2-2014-06
TNPW2-2014-06
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
TNPW2-2014-04
TNPW2-2014-04TNPW2-2014-04
TNPW2-2014-04
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
TNPW2-2013-10
TNPW2-2013-10TNPW2-2013-10
TNPW2-2013-10
 
TNPW2-2013-08
TNPW2-2013-08TNPW2-2013-08
TNPW2-2013-08
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
TNPW2-2013-06
TNPW2-2013-06TNPW2-2013-06
TNPW2-2013-06
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
TNPW2-2013-04
TNPW2-2013-04TNPW2-2013-04
TNPW2-2013-04
 
TNPW2-2013-01
TNPW2-2013-01TNPW2-2013-01
TNPW2-2013-01
 

TNPW2-2011-05

  • 1. TNPW2 2010/2011 05 – PHP Mgr. Lukáš Vacek lukas.vacek@uhk.cz
  • 2.
  • 5. PHP knihovny a frameworky
  • 8. 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 RasmusLerdorf. 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í verze je PHP5 (r. 2004, ZEND Engine II.). 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 3
  • 9. 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 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, ZendOptimizer, ionCube, APC, Nette) umějí opcode spravovat v Cache paměti serveru –> zvýšení výkonu a odezvy aplikace. Je 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) 4
  • 10. 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… Předá tento požadavek systému PHP , ten se postará o provedení všech příkazů v souboru a výsledek vrátí zpět WWW serveru, 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. 5
  • 11.
  • 14. PHP knihovny a frameworky
  • 17. 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í)… 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 Je možné vytvářet webové služby nebo RIA aplikace (např. v kombinaci s JavaScriptem) 7
  • 18. 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 Worldto 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. memoryleaks 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í  8
  • 19. 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 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 – v tom pomůže použití frameworku. 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 9
  • 20.
  • 23. PHP knihovny a frameworky
  • 26.
  • 27. Každý program (skript) v PHP je složen ze sekvence příkazů oddělených ";".
  • 28. 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.
  • 29. 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.
  • 30.
  • 33. PHP knihovny a frameworky
  • 36. 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, 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é. Hodně frameworků používá tzv. bootstrap. PEAR (PHP ExtensionandApplicationRepository)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/ http://www.serversidemagazine.com/php/bootstrap-php-code 13
  • 37. 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/ 14
  • 38.
  • 41. PHP knihovny a frameworky
  • 44. 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! 16
  • 45.
  • 48. PHP knihovny a frameworky
  • 51. Odkazy na Internetu http://www.kosek.cz/php/index.html (PHP) http://www.linuxsoft.cz/php/ (český tutoriál) http://www.jakpsatweb.cz/php/moznosti-php.html (rychlokurz PHP) http://www.root.cz/serialy/velky-test-php-frameworku/ (PHP frameworky) http://pear.php.net/ (PHP knihovna) http://www.smarty.net/ (PHP framework) http://teng.sourceforge.net/ (PHP framework) http://adodb.sourceforge.net/ (ADOdbDatabaseAbstractionLibrary) http://www.zend.com/products(produkty ZEND) http://phpfashion.com/ http://www.rkrishardy.com/2009/06/new-php-interpreter-based-xss-and-sql-security-tester/ (něco k bezpečnosti) 18
  • 52. Doporučená literatura Kosek, Jiří – PHP tvorba interaktivních internetových aplikací – podrobný průvodce, Grada 1999 Lacko, Luboslav – PHP a MySQL – Hotová řešení, CP Books2005 Gutmans, Andi; Bakken, StigSaether; Rethans, Derrick – Mistrovství v PHP5, ComputerPress 2007 Zandstra, Matt – PHP Objects, Patterns, andPractice, ThirdEdition, Apress 2010 Pope, Keith – Zend Framework 1.8 Web ApplicationDevelopment, PacktPublishing2009 19
  • 53.
  • 56. PHP knihovny a frameworky