SlideShare a Scribd company logo
1 of 21
TNPW2
2011/2012
04 – PHP


Mgr. Lukáš Vacek
lukas.vacek@uhk.cz
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

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

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

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




Agenda

          Charakteristika PHP
         • Výhody a nevýhody PHP
         • Základy syntaxe
         • PHP knihovny a frameworky
         • PHP a TNPW2
         • Internet, doporučená literatura
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

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

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




Agenda

          Charakteristika PHP
          Výhody a nevýhody PHP
         • Základy syntaxe
         • PHP knihovny a frameworky
         • PHP a TNPW2
         • Internet, doporučená literatura
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




Agenda

          Charakteristika PHP
          Výhody a nevýhody PHP
          Základy syntaxe
         • PHP knihovny a frameworky
         • PHP a TNPW2
         • Internet, doporučená literatura
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

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

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




Agenda

          Charakteristika PHP
          Výhody a nevýhody PHP
          Základy syntaxe
          PHP knihovny a frameworky
         • PHP a TNPW2
         • Internet, doporučená literatura
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




Agenda

          Charakteristika PHP
          Výhody a nevýhody PHP
          Základy syntaxe
          PHP knihovny a frameworky
          PHP a TNPW2
         • Internet, doporučená literatura
19

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://www.root.cz/serialy/php-v-objeti-objektu/ (OOP v PHP)
•   http://www.phpguru.cz/
•   http://pear.php.net/ (PHP knihovna)
•   http://www.smarty.net/ (PHP framework)
•   http://teng.sourceforge.net/ (PHP framework)
•   http://adodb.sourceforge.net/ (ADOdb Database Abstraction Library)
•   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)
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




Souhrn

          Charakteristika PHP
          Výhody a nevýhody PHP
          Základy syntaxe
          PHP knihovny a frameworky
          PHP a TNPW2
          Internet, doporučená literatura

More Related Content

Similar to TNPW2-2012-04

06 prez10(tvorba webu)
06 prez10(tvorba webu)06 prez10(tvorba webu)
06 prez10(tvorba webu)olc_user
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduJan Kodera
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Péhápkaři
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webDevelcz
 

Similar to TNPW2-2012-04 (20)

06 prez10(tvorba webu)
06 prez10(tvorba webu)06 prez10(tvorba webu)
06 prez10(tvorba webu)
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
Webové technologie
Webové technologieWebové technologie
Webové technologie
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 
TNPW2-2013-02
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
TNPW2-2011-04
TNPW2-2011-04TNPW2-2011-04
TNPW2-2011-04
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 
TNPW2-2012-07
TNPW2-2012-07TNPW2-2012-07
TNPW2-2012-07
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro web
 

More from Lukáš Vacek (17)

TNPW2-2016-07
TNPW2-2016-07TNPW2-2016-07
TNPW2-2016-07
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
TNPW2-2016-04
TNPW2-2016-04TNPW2-2016-04
TNPW2-2016-04
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
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-04
TNPW2-2014-04TNPW2-2014-04
TNPW2-2014-04
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
TNPW2-2013-10
TNPW2-2013-10TNPW2-2013-10
TNPW2-2013-10
 
TNPW2-2013-09
TNPW2-2013-09TNPW2-2013-09
TNPW2-2013-09
 
TNPW2-2013-08
TNPW2-2013-08TNPW2-2013-08
TNPW2-2013-08
 
TNPW2-2013-06
TNPW2-2013-06TNPW2-2013-06
TNPW2-2013-06
 
TNPW2-2012-10
TNPW2-2012-10TNPW2-2012-10
TNPW2-2012-10
 
TNPW2-2012-09
TNPW2-2012-09TNPW2-2012-09
TNPW2-2012-09
 
TNPW2-2012-08
TNPW2-2012-08TNPW2-2012-08
TNPW2-2012-08
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 

TNPW2-2012-04

  • 1. TNPW2 2011/2012 04 – PHP Mgr. Lukáš Vacek lukas.vacek@uhk.cz
  • 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
  • 19. 19 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://www.root.cz/serialy/php-v-objeti-objektu/ (OOP v PHP) • http://www.phpguru.cz/ • http://pear.php.net/ (PHP knihovna) • http://www.smarty.net/ (PHP framework) • http://teng.sourceforge.net/ (PHP framework) • http://adodb.sourceforge.net/ (ADOdb Database Abstraction Library) • 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)
  • 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