PHP

Z Wikipedie, otevřené encyklopedie

(Přesměrováno z Php)
Skočit na: Navigace, Hledání
PHP
vývojář PHP Group
aktuální verze 5.2.9 (26. února 2009)
připravovaná verze 5.3.0 RC1 a 6.0-dev ()
OS multiplatformní
typ softwaru Skriptovací programovací jazyk
licence PHP Licence
web www.php.net

PHP (rekurzivní zkratka PHP: Hypertext Preprocessor, „PHP: Hypertextový preprocesor“, původně Personal Home Page) je skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek. Nejčastěji se začleňuje přímo do struktury jazyka HTML, XHTML či WML, což lze využít při tvorbě webových aplikací. PHP lze použít i k tvorbě konzolových a desktopových aplikací.

PHP skripty jsou většinou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti (interpret PHP skriptu je možné volat pomocí příkazové řádky). Syntaxe jazyka je inspirována několika programovacími jazyky (Perl, C, Pascal a Java). PHP je nezávislý na platformě, skripty fungují bez větších úprav na mnoha různých operačních systémech. Podporuje mnoho knihoven pro různé účely - např. zpracování textu, grafiky, práci se soubory, přístup k většině databázových systémů (mj. MySQL, ODBC, Oracle, PostgreSQL, MSSQL), podporu celé řady internetových protokolů (HTTP, SMTP, SNMP, FTP, IMAP, POP3, LDAP…)

PHP se stalo velmi oblíbeným především díky jednoduchosti použití a tomu, že kombinuje vlastnosti více programovacích jazyků a nechává tak vývojáři částečnou svobodu v syntaxi. V kombinaci s operačním systémem Linux, databázovým systémem (obvykle MySQL nebo PostgreSQL) a webovým serverem Apache je často využíván k tvorbě webových aplikací. Pro tuto kombinaci se vžila zkratka LAMP – tedy spojení Linux, Apache, MySQL a PHP nebo Perl.

Pomocí technologie PHP je naprogramovaná Wikipedie.

Obsah

[editovat] Ukázka kódu

Takto v PHP vypadá skript Hello world:

<?php
	echo "Ahoj, světe!";
?>

[editovat] Některé vlastnosti jazyka PHP

  • Jazyk PHP je dynamicky typový, tzn. že datový typ proměnné se určí v okamžiku přiřazení hodnoty.
  • Kvůli tomu má PHP dva operátory porovnání - '==' a '==='; při použití prvního dochází před porovnáním ke konverzi, při použití druhého je výraz pravdivý jen když jsou oba dva operandy stejného datového typu a jejich obsah má stejnou hodnotu.
  • Pole se dají indexovat číselnými indexy (jako v jazyce C), nebo mohou fungovat jako hash-mapa. Stejné pole může obsahovat oba typy indexů.
  • Pole jsou heterogenní (stejné pole může obsahovat prvky různých typů) a řídká.
  • Řetězce lze uzavírat do uvozovek (při vyhodnocení se provede nahrazení proměnných uvnitř) nebo do apostrofů (nahrazuje se jen escape sekvence \').
// Zde je v proměnné string (tečka je operátor spojování řetězců)
$retez = "Ahoj, světe" . ', mám se dobře' . " a nevadí, že střídám oddělovače";
 
// Zde je v proměnné číslo (int)
$cislo = 100;
 
// Do proměnné je možné dát pole, které obsahuje jak čísla, tak znaky či další pole
$pole = array('a', 'b', 1, 2, array('první' => 'podpole', 'vytištěno'));
 
// Nenahlásí chybu (jenom varování) a vytiskne 'Array'
print($pole);
 
// Vytiskne obsah proměnné pole
print_r($pole);
 
// Test porovnání
$cislo = 100;
$retez = '100';
 
// Toto porovnání ('==') platí díky automatické typové konverzi
if ($retez == $cislo)
{
  echo 'Jsou stejné';
}
 
// Ale porovnání pomocí '===' neplatí, neboť nejsou stejné typy
if ($retez === $cislo)
{
  echo 'To by nešlo';
}
  • PHP do verze 4.2.0 ve výchozím nastavení automaticky přejímalo veškeré proměnné poslané jakoukoliv metodou (HTTP POST, HTTP GET, HTTP cookie, ale i ze zabudovaného mechanismu sessions) a umožňovalo s nimi dále pracovat jako s globálními - tato možnost představovala bezpečnostní riziko[1].
  • Od verze 4.2.0 lze hodnotu získat z tzv. superglobálních proměnných s garancí původu informace - tedy že data byla odeslána požadovanou metodou. Používání globálních proměnných je stále možné pomocí konfigurační direktivy register_globals povolit, ale z bezpečnostních důvodů je to silně nedoporučováno.
// odešlu formulář metodou POST, kde do pole s názvem jmeno vepíšu 'Tom'
echo $jmeno; // vrátí 'Tom', funguje pouze v případě povolených globálních proměnných
echo $_POST['jmeno']; // vrátí 'Tom', superglobální proměnné fungují i při vypnutých globálních proměnných
echo $_GET['jmeno'];  // vypíše se chybové hlášení o neexistenci proměnné a vrátí NULL
// NULL je zvláštní hodnota libovolného typu proměnných pro stav 'nedefinováno'

[editovat] Významné projekty implementované v PHP

  • software MediaWiki — např. Wikipedie, tato webová encyklopedie
  • phpBB — balík pro provoz webového fóra
  • WordPress — publikační systém pro provoz blogů a podobných aplikací
  • phpMyAdmin — oblíbená webová aplikace pro správu databázového systému MySQL
  • Texy! — překladač intuitivní syntaxe pro formátování textu na HTML

Další viz Kategorie:Software v PHP.

[editovat] Výhody a nevýhody PHP


[editovat] Výhody PHP

  • PHP je specializované na webové stránky
  • rozsáhlý soubor funkcí v základní knihovně PHP + dalších z PECL
  • nativní podpora mnoha databázových systémů
  • multiplatformost (zejména Linux, Windows)
  • možnost využití nativních funkcí operačního systému (možná nekompatibilita s jiným OS)
  • strmá křivka učení
  • obrovská podpora na hostingových službách – PHP je fakticky standardem, který najdeme všude
  • obrovské množství projektů a kódů, které lze zdarma využít (WordPress, phpBB a další)
  • poměrně slušná dokumentace
  • vynikající, velmi svobodná licence – svobodnější, než GPL

[editovat] Nevýhody PHP

  • jazyk PHP není nikde definován, je popsán pouze jeho implementací
  • mírně nekonzistentní vývoj v minulosti, který si sebou PHP nese dosud (někdy často měnící se příkazy atd…)
  • nekonzistentní pojmenování funkcí a nejednotné pořadí parametrů
  • ač jazyk výborně podporuje výjimky, jeho knihovna je používá jen zřídka
  • slabší podpora Unicode, pouze přes PHP knihovnu (v PHP 6 má být Unicode řetězec jako základní typ)
  • ve standardní distribuci chybí ladící (debugovací) nástroj
  • po zpracování požadavku neudržuje kontext aplikace, vytváří jej vždy znovu (oslabuje výkon)
  • nepodporuje jmenné prostory (v nejbližší verzi 5.3 v PHP budou)

[editovat] Historický vývoj PHP

PHP bylo původně označení pro Personal Home Page[2], tedy osobní domácí stránky. Vše začalo v roce 1994, kdy byla napsána binární část Common Gateway Interface (CGI) v programovacím jazyku C. Tuto prvotní část napsal Dánský/Grónský Programátor Rasmus Lerdorf. Lerdorf zpočátku vytvořil tyto nástroje pro osobní domácí stránky (Personal Home Page) za účelem možné záměny s malou skupinou skriptů v Perlu, které chtěl používat pro údržbu osobní domovské stránky. Nástroje měly zajistit běh úloh jako například zobrazení résumé (obsahu) a zaznamenávání návštěvnosti jeho stránek.[2] Tento binární kód ještě tentýž rok skloubil s jiným programem, který sám napsal. Po spojení s Form Interpreter tak vznikla kombinace PHP/FI, která měla mnohem větší funkčnost. PHP/FI obsahovala širokou implementaci pro programovací jazyk C a navíc tato verze mohla komunikovat s databázemi, což umožnilo tvorbu prvních jednoduchých dynamických webových aplikací. Lerdorf veřejně vydal PHP 8. června 1995, aby mohl najít co nejvíce chyb a tak zdokonalil kód.[3] Tato verze byla pojmenována jako PHP verze 2 a již měla základní funkčnost jako má dnešní PHP. To zahrnuje například proměnné ve stylu Perlu, zpracování formulářů a možnost vložit HTML kód. Syntaxe byla obdobná jako u Perlu, ale byla omezenější, jednodušší a méně konzistentní.[2]

Zeev Suraski a Andi Gutmans, dva Izraelští vývojáři na Technion IIT, přepsali parser v roce 1997, vytvořili tak základ PHP 3 a změnili název jazyka na rekurzivní zkratku PHP = PHP: Hypertext Preprocessor.[2] Tým vývojářů oficiálně vydal PHP/FI 2 v Listopadu 1997 po měsíčním testování beta verze. Poté začalo veřejné testování PHP 3, a její oficiální uvolnění přišlo v červnu 1998. Zeev Suraski a Andi Gutmans poté začali opětovné přepisování jádra PHP a vydali Zend Engine v roce 1999.[4] Založili firmu Zend Technologies v Ramat Gan, Izrael.[2]

Dne 22. května 2000 byla vydána verze PHP 4 postavená na Zend Engine 1.0. Dne 13. června 2004 byla představena verze PHP 5, která již stojí na novém Zend Engine II.[2] PHP 5 obsahuje nové rysy jako je vylepšená podpora pro objektově orientované programování, PHP Data Objects extension (ta definuje lehké a konzistentní rozhraní pro napojení k databázím) a nesčetné množství výkonových vylepšení.[5] PHP 4 se již dále nevyvíjí a pro tuto verzi se nebudou vydávat ani žádné bezpečnostní aktualizace.[6][7]

V roce 2008 se stává PHP 5 jedinou stabilní verzí, která se vyvíjí. Později se zjistilo, že zde chybí static binding a bude přidáno v PHP 5.3.[8][9] PHP 6 se bude zároveň vyvíjet s verzí PHP 5. Mezi hlavní změny patří odebrání register_globals[10], magické uvozovky[11] a safe mode.[6][12]

PHP ještě plně nepodporuje Unicode nebo multibyte strings; podpora unicode bude zahrnuta až do verze PHP 6. Spousta kvalitních open sourcových projektů pozastavilo podporu PHP 4 ve svých nových kódech od 5. února 2008. Aby jim konsorcium vývojářů PHP usnadnilo přechod na PHP 5 poskytlo jim přechodovou verzi z PHP 4 na PHP 5.[13][14]

PHP 5 běží jak ve 32-bitovém tak i v 64-bitovém prostředí, ale jedinou oficiální verzí pro Windows je 32-bitová verze, vyžadující mód kompatibility Windows 32-bit při použití IIS v 64-bitovém prostředí Windows. K dispozici je verze třetí strany[15], která je určena pro 64-bitové Windows.

[editovat] Data vydání hlavních verzí

Význam
červeně staré verze; již nepodporované
žlutá stará verze; stále podporovaná
zelená Současné verze
modrá Budoucí vydání
Verze podverze datum vydání Poznámka
1.0 1.0.0 8. června 1995 Oficiální název „Personal Home Page Tools (PHP Tools)“. Poprvé byl použit název „PHP“.
2.0 2.0.0 16. dubna 1996 Autor jej považoval za "nejrychlejší a nejjednodušší nástroj" pro tvorbu dynamických webových stránek.
3.0 3.0.0 6. června 1998 Tým vývojářů se z původní jedné osoby rozšířil na více osob. Zeev Suraski a Andi Gutmans přepsali celý základ pro tuto verzi.
4.0 4.0.0 22. května 2000 Přidán pokročilý dvoustupňový systém parse/execute (analyzovat/vykonat) syntaktické analýzy tagu - Zend engine.
4.1.0 10. prosince 2001 Byly představeny 'superglobalní proměnné' ($_GET, $_POST, $_SESSION, etc.)
4.2.0 22. dubna 2002 zakázání register_globals ve výchozím nastavení. Data přijatá prostřednictvím sítě nejsou přímo vkládány do názvů globálních proměnných, uzavírá se tím možnost využití bezpečnostních děr.
4.3.0 27. prosince 2002 Představeno CLI, jako doplněk CGI.
4.4.0 11. srpna 2005 Dodány stránky nápovědy pro skripty phpize a php-config.
4.4.8 3. ledna 2008 Oprava některých bezpečnostních prvků a oprava chyb. Měla to být poslední update verze PHP 4. Bezpečnostní updaty budou jen do 8. srpna 2008, pokuď to bude nezbytné.
4.4.9 7. srpna 2008 Oprava některých bezpečnostních prvků a oprava chyb. Poslední vydání verze ze série PHP 4.4.
5.0 5.0.0 13. července 2004 Zend Engine II s novým objektovým modelováním.
5.1.0 24. listopadu 2005 Zlepšení výkonu zavedením kompilátoru proměnných v přepracovaném Engine PHP.
5.2.0 2. listopadu 2006 Povolen filtr přípon ve výchozím nastavení.
5.2.6 1. května 2008 oprava bezpečnostních děr a chyb
5.2.8 8. prosince 2008 oprava chyb

[editovat] Související články

[editovat] Externí odkazy

[editovat] Reference

  1. Živě.cz: Problémy starých skriptů v novém PHP
  2. a b c d e f History of PHP and related projects [online]. The PHP Group, [cit. 2008-02-25]. Dostupné: <[1]>.
  3. Lerdorf, Rasmus. Announce: Personal Home Page Tools (PHP Tools) [online]. [s.n.], [cit. 2006-09-17]. Dostupné: <[2]>.
  4. Zend Engine version 2.0: Feature Overview and Design [online]. Zend Technologies Ltd., [cit. 2006-09-17]. Dostupné: <[3]>.
  5. Trachtenberg, Adam. Why PHP 5 Rocks! [online]. O'Reilly, [cit. 2008-02-22]. Dostupné: <[4]>.
  6. a b php.net 2007 news archive [online]. The PHP Group, [cit. 2008-02-22]. Dostupné: <[5]>.
  7. Kerner, Sean Michael. PHP 4 is Dead—Long Live PHP 5 [online]. InternetNews, [cit. 2008-03-16]. Dostupné: <[6]>.
  8. Late Static Binding in PHP [online]. Digital Sandwich, [cit. 2008-03-25]. Dostupné: <[7]>.
  9. Static Keyword [online]. The PHP Group, [cit. 2008-03-25]. Dostupné: <[8]>.
  10. Using Register Globals [online]. PHP, [cit. 2008-04-04]. Dostupné: <[9]>.
  11. http://en.wikipedia.org/wiki/Magic_quotes
  12. Prepare for PHP 6 [online]. CorePHP, [cit. 2008-03-24]. Dostupné: <[10]>.
  13. GoPHP5. PHP projects join forces to Go PHP 5 [PDF]. [s.n.], [cit. 2008-02-23]. Dostupné: <[11]>.
  14. GoPHP5 [online]. GoPHP5, [cit. 2008-02-22]. Dostupné: <[12]>.
  15. Fusion-X LAN. The PHPx64 Project [online]. [s.n.], [cit. 2008-05-05]. Dostupné: <[13]>.


Programovací jazyky
Multiparadigmatické: AdaCommon LispDF#PHPPythonRubyTcl/Tk
Strukturované (procedurální): AWKCCOBOLForthFortranLuaModula-2 / Modula-3OberonPascalPerlPL/SQL
Objektové: BETAC++C#EiffelFlexJavaJavaScriptObject PascalObjective-CSmalltalkVB.NET
Funkcionální: CleanErlangHaskellLispMirandaMLOCamlScheme
Logické: PrologGoedel
Výukové: BaltazarBaltíkLogoKarel
Ezoterické: BrainfuckMalbolgeOok!Whitespace
Historické: ALGOLAPL / JBASICMUMPSPL/1Simula 67
Další: ABAPAppleScriptColdFusionJSAMATLABMathematicaPawnSQLVisual Basic / VBScriptVimscriptVisual FoxPro