• Like
TNPW2-2012-04
Upcoming SlideShare
Loading in...5
×

TNPW2-2012-04

  • 882 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
882
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. TNPW22011/201204 – PHPMgr. Lukáš Vaceklukas.vacek@uhk.cz
  • 2. 2Agenda • Charakteristika PHP • Výhody a nevýhody PHP • Základy syntaxe • PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 3. 3Historie 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 GPLhttp://www.php.net (oficiální web)http://en.wikipedia.org/wiki/PHP_License
  • 4. 4Zá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/productshttp://zdrojak.root.cz/clanky/nette-framework-cache/http://nette.org (Nette framework)
  • 5. 5PHP 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. 6Agenda  Charakteristika PHP • Výhody a nevýhody PHP • Základy syntaxe • PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 7. 7Vý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. 8Nevý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. 9Nevý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-surprisehttp://latrine.dgx.cz/php-memory-leakshttp://myego.cz/item/php-vytvari-i-dnes-banda-pitomcuhttp://phpfashion.com/escapovani-definitivni-priruckahttp://ondra.zizka.cz/stranky/programovani/php/vyhody_a_nevyhody_php.texy
  • 10. 10Agenda  Charakteristika PHP  Výhody a nevýhody PHP • Základy syntaxe • PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 11. 11Zá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. 12Agenda  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe • PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 13. 13PHP 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 Frameworkhttp://www.root.cz/serialy/velky-test-php-frameworku/
  • 14. 14Bootstrap• 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/RPChttp://www.serversidemagazine.com/php/bootstrap-php-code
  • 15. 15Proč 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-aplikaceDoporučené PHP frameworky• http://framework.zend.com/• http://nette.org/cs/
  • 16. 16Agenda  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 17. 17PHP 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. 18Agenda  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky  PHP a TNPW2 • Internet, doporučená literatura
  • 19. 19Odkazy 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. 20Doporuč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. 21Souhrn  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky  PHP a TNPW2  Internet, doporučená literatura