SlideShare uma empresa Scribd logo
1 de 22
TNPW2
2012/2013
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.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/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

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

          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

          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

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

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
TNPW2-2013-02
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
 
TNPW2-2014-06
TNPW2-2014-06TNPW2-2014-06
TNPW2-2014-06
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
TNPW2-2016-04
TNPW2-2016-04TNPW2-2016-04
TNPW2-2016-04
 
TNPW2-2016-01
TNPW2-2016-01TNPW2-2016-01
TNPW2-2016-01
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
TNPW2-2014-04
TNPW2-2014-04TNPW2-2014-04
TNPW2-2014-04
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 
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
 
TNPW2-2016-07
TNPW2-2016-07TNPW2-2016-07
TNPW2-2016-07
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
WordCamp Brno 2017 - rychlý a bezpečný web
WordCamp Brno 2017  - rychlý a bezpečný webWordCamp Brno 2017  - rychlý a bezpečný web
WordCamp Brno 2017 - rychlý a bezpečný web
 
Výkon WordPress
Výkon WordPressVýkon WordPress
Výkon WordPress
 

Destaque

Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconVojta Svoboda
 
Bootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoBootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoAdam Kudrna
 
Hercules Solar Bg All
Hercules Solar Bg AllHercules Solar Bg All
Hercules Solar Bg Allsgrada
 
Automated Versioning In OSGi
Automated Versioning In OSGiAutomated Versioning In OSGi
Automated Versioning In OSGibauml
 
Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010David Grudl
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015David Grudl
 
Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?David Grudl
 
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...internet27
 
Instalación de Sql server 2014 ctp2 sobre azure
Instalación de Sql server 2014 ctp2 sobre azureInstalación de Sql server 2014 ctp2 sobre azure
Instalación de Sql server 2014 ctp2 sobre azureJulián Castiblanco
 
Lv pronto lucinda 2014 atividade ava fórum 6 a
Lv pronto lucinda 2014 atividade ava fórum 6 aLv pronto lucinda 2014 atividade ava fórum 6 a
Lv pronto lucinda 2014 atividade ava fórum 6 aemebdis
 
Manutenção de sistemas operacionais e aplicativos
Manutenção de sistemas operacionais e aplicativosManutenção de sistemas operacionais e aplicativos
Manutenção de sistemas operacionais e aplicativosAugusto Berredo
 
Prot. 3286 14 pl obrigatoriedade da exigência da apresentação de documento ...
Prot. 3286 14   pl obrigatoriedade da exigência da apresentação de documento ...Prot. 3286 14   pl obrigatoriedade da exigência da apresentação de documento ...
Prot. 3286 14 pl obrigatoriedade da exigência da apresentação de documento ...Claudio Figueiredo
 
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?Андрей Федоров
 
Riesgos laborales
Riesgos laboralesRiesgos laborales
Riesgos laboralesasilva100
 
Pré modernismo e Vanguardas Europeias
Pré modernismo e Vanguardas EuropeiasPré modernismo e Vanguardas Europeias
Pré modernismo e Vanguardas EuropeiasOctávio Da Matta
 
Slides final 7
Slides   final 7Slides   final 7
Slides final 7Tuan Pedro
 

Destaque (20)

Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Bootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoBootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, Brno
 
Hercules Solar Bg All
Hercules Solar Bg AllHercules Solar Bg All
Hercules Solar Bg All
 
Automated Versioning In OSGi
Automated Versioning In OSGiAutomated Versioning In OSGi
Automated Versioning In OSGi
 
Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015
 
Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?
 
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...
Ваш сайт глазами клиента. Использование бесплатных технологий Яндекса для уве...
 
Instalación de Sql server 2014 ctp2 sobre azure
Instalación de Sql server 2014 ctp2 sobre azureInstalación de Sql server 2014 ctp2 sobre azure
Instalación de Sql server 2014 ctp2 sobre azure
 
Prog
ProgProg
Prog
 
ง 30245 การสร้างงานมัลติมีเดีย
ง 30245 การสร้างงานมัลติมีเดีย ง 30245 การสร้างงานมัลติมีเดีย
ง 30245 การสร้างงานมัลติมีเดีย
 
Lv pronto lucinda 2014 atividade ava fórum 6 a
Lv pronto lucinda 2014 atividade ava fórum 6 aLv pronto lucinda 2014 atividade ava fórum 6 a
Lv pronto lucinda 2014 atividade ava fórum 6 a
 
Manutenção de sistemas operacionais e aplicativos
Manutenção de sistemas operacionais e aplicativosManutenção de sistemas operacionais e aplicativos
Manutenção de sistemas operacionais e aplicativos
 
Prot. 3286 14 pl obrigatoriedade da exigência da apresentação de documento ...
Prot. 3286 14   pl obrigatoriedade da exigência da apresentação de documento ...Prot. 3286 14   pl obrigatoriedade da exigência da apresentação de documento ...
Prot. 3286 14 pl obrigatoriedade da exigência da apresentação de documento ...
 
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?
ИБЛИОТЕКА В ЦИФРОВОЙ СРЕДЕ: УПАДОК И РАЗРУШЕНИЕ ИЛИ НАЧАЛО НОВОЙ ИСТОРИИ?
 
MỞ BÁN CĂN HỘ EMERALD TRUNG TÂM QUẬN THỦ ĐỨC
MỞ BÁN CĂN HỘ EMERALD TRUNG TÂM QUẬN THỦ ĐỨC MỞ BÁN CĂN HỘ EMERALD TRUNG TÂM QUẬN THỦ ĐỨC
MỞ BÁN CĂN HỘ EMERALD TRUNG TÂM QUẬN THỦ ĐỨC
 
Riesgos laborales
Riesgos laboralesRiesgos laborales
Riesgos laborales
 
Pré modernismo e Vanguardas Europeias
Pré modernismo e Vanguardas EuropeiasPré modernismo e Vanguardas Europeias
Pré modernismo e Vanguardas Europeias
 
L’enfocament
L’enfocamentL’enfocament
L’enfocament
 
Slides final 7
Slides   final 7Slides   final 7
Slides final 7
 

Semelhante a TNPW2-2013-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
 
Výkonnost webových aplikací
Výkonnost webových aplikacíVýkonnost webových aplikací
Výkonnost webových aplikacíTaste Medio
 
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
 
Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?WebScience1
 
Generátory statických webů
Generátory statických webůGenerátory statických webů
Generátory statických webůMichal Doležel
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyINTERES - KISK
 
Rizika použití WordPressu
Rizika použití WordPressuRizika použití WordPressu
Rizika použití WordPressuSUPERKODERS
 
WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018Brilo Team
 
PHP Prague 3. 6. 2016 - Bez závislosti na frameworku
PHP Prague 3. 6. 2016 - Bez závislosti na frameworkuPHP Prague 3. 6. 2016 - Bez závislosti na frameworku
PHP Prague 3. 6. 2016 - Bez závislosti na frameworkuMartin Hujer
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop pythonVladan Laxa
 

Semelhante a TNPW2-2013-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
 
Webové technologie
Webové technologieWebové technologie
Webové technologie
 
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
 
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
 
Výkonnost webových aplikací
Výkonnost webových aplikacíVýkonnost webových aplikací
Výkonnost webových aplikací
 
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...
 
Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?
 
Instalace WordPress
Instalace WordPressInstalace WordPress
Instalace WordPress
 
Generátory statických webů
Generátory statických webůGenerátory statických webů
Generátory statických webů
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatiky
 
Úvod do XAML
Úvod do XAMLÚvod do XAML
Úvod do XAML
 
Joomla! na MS Windows
Joomla! na MS WindowsJoomla! na MS Windows
Joomla! na MS Windows
 
Rizika použití WordPressu
Rizika použití WordPressuRizika použití WordPressu
Rizika použití WordPressu
 
WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018
 
PHP Prague 3. 6. 2016 - Bez závislosti na frameworku
PHP Prague 3. 6. 2016 - Bez závislosti na frameworkuPHP Prague 3. 6. 2016 - Bez závislosti na frameworku
PHP Prague 3. 6. 2016 - Bez závislosti na frameworku
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop python
 

Mais de Lukáš Vacek

Mais de Lukáš Vacek (7)

TNPW2-2014-01
TNPW2-2014-01TNPW2-2014-01
TNPW2-2014-01
 
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-2013-04

  • 1. TNPW2 2012/2013 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.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. 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/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 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. 17 Agenda  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky • PHP a TNPW2 • Internet, doporučená literatura
  • 18. 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. 19 Agenda  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky  PHP a TNPW2 • Internet, doporučená literatura
  • 20. 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. 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. 22 Souhrn  Charakteristika PHP  Výhody a nevýhody PHP  Základy syntaxe  PHP knihovny a frameworky  PHP a TNPW2  Internet, doporučená literatura