+ All Categories
Home > Technology > TNPW2-2013-04

TNPW2-2013-04

Date post: 20-Dec-2014
Category:
Upload: lukas-vacek
View: 417 times
Download: 2 times
Share this document with a friend
Description:
 
22
TNPW2 2012/2013 04 – PHP Mgr. Lukáš Vacek [email protected]
Transcript
Page 1: TNPW2-2013-04

TNPW22012/201304 – PHP

Mgr. Lukáš [email protected]

Page 2: TNPW2-2013-04

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

Page 3: TNPW2-2013-04

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

Page 4: TNPW2-2013-04

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)

Page 5: TNPW2-2013-04

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

Page 6: TNPW2-2013-04

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

Page 7: TNPW2-2013-04

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)

Page 8: TNPW2-2013-04

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í

Page 9: TNPW2-2013-04

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

Page 10: TNPW2-2013-04

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

Page 11: TNPW2-2013-04

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()

Page 12: TNPW2-2013-04

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

Page 13: TNPW2-2013-04

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/

Page 14: TNPW2-2013-04

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

Page 15: TNPW2-2013-04

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/

Page 16: TNPW2-2013-04

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/

Page 17: TNPW2-2013-04

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

Page 18: TNPW2-2013-04

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!

Page 19: TNPW2-2013-04

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

Page 20: TNPW2-2013-04

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)

Page 21: TNPW2-2013-04

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

Page 22: TNPW2-2013-04

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


Recommended