Date post: | 20-Dec-2014 |
Category: |
Technology |
Upload: | lukas-vacek |
View: | 417 times |
Download: | 2 times |
2
Agenda
4• 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.4.8 (10/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 mezi-jazyka (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
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
4 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-surprisehttp://latrine.dgx.cz/php-memory-leakshttp://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
4 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
4 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
Automatické testování v PHP?
• ANO, rozhodně používejte!• U rozsáhlejších projektů s více vývojáři je to nutnost!• Vyhnete se
▫ opakujícím se chybám, ▫ chybám souvisejícím se změnami ve zdrojovém kódu
• Výstup/report z testů lze použít i při řízení projektu (agilní metodiky, sprinty)• (Téměř) libovolné druhy testů
▫ jednotkové/unit, ▫ integrační, ▫ akceptační,▫ regresní apod.
• PHPUnit, PHP Unit Testing Framework, SimpleTest, lime a další…
http://www.zdrojak.cz/serialy/testovani-a-tvorba-testovatelneho-kodu-v-php/
17
Agenda
4 Charakteristika PHP Výhody a nevýhody PHP Základy syntaxe PHP knihovny a frameworky• PHP a TNPW2• Internet, doporučená literatura
18
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!
19
Agenda
4 Charakteristika PHP Výhody a nevýhody PHP Základy syntaxe PHP knihovny a frameworky PHP a TNPW2• Internet, doporučená literatura
20
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)
21
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
22
Souhrn
4 Charakteristika PHP Výhody a nevýhody PHP Základy syntaxe PHP knihovny a frameworky PHP a TNPW2 Internet, doporučená literatura