V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

PHP

Z Multimediaexpo.cz

PHP (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ž je velmi výhodné pro tvorbu webových aplikací. PHP lze ovšem také použít i k tvorbě konzolových a desktopových aplikací.

Samotné Multimediaexpo.cz je kompletně naprogramováno v PHP.

PHP skripty jsou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti. Syntaxe jazyka kombinuje hned několik programovacích jazyků (Perl, C, Pascal a Java). PHP je nezávislý na platformě, skripty fungují bez úprav na mnoha různých operačních systémech. Obsahuje rozsáhlé knihovny funkcí pro zpracování textu, grafiky, práci se soubory, přístup k většině databázových serverů (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 databázovým serverem (především s MySQL nebo PostgreSQL) a webovým serverem Apache je často využíván k tvorbě webových aplikací. Díky velmi častému nasazení na serverch se vžila zkratka LAMP – tedy spojení Linux, Apache, MySQL a PHP nebo Perl.

S verzí PHP 5 se výrazně zlepšil přístup k objektově orientovanému programování podobný Javě.

Obsah

Historie

Od roku 1994 je PHP jedním z nejpoužívanějších způsobů tvorby dynamicky generovaných WWW stránek. Jeho tvůrce (Rasmus Lerdorf) jej vytvořil pro svou osobní potřebu přepsáním z Perlu do jazyka C. Sada skriptů byla vydána ještě v témže roce pod názvem Personal Home Page Tools, zkráceně PHP.

V polovině roku se systém PHP spojil s programem Form Interpreter stejného autora. Tak vzniklo PHP/FI 2.0. Zeev Suraski a Andi Gutmans v roce 1997 přepsali parser a zformovali tak základ PHP3. Současně byl název změněn na dnešní podobu PHP hypertext procesor. PHP3 vyšlo v roce 1998, bylo rychlejší, obsahovalo více funkcí. Také běželo i pod operačním systémem Windows.

V roce 2000 vychází PHP verze 4, o čtyři roky později pak verze 5 s vylepšeným objektovým přístupem, podobným jazyku Java. Zatím poslední verzí je 5.2.1 z roku 2007.

Ukázka kódu

Takto v PHP vypadá skript Hello world:

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

Můžeme text ale přenášet i přes proměnnou:

<?php
	$promenna = "ahoj, světe!";
	echo $promenna;
?>

Typické vlastnosti jazyka PHP

  • Jazyk PHP je dynamicky typový, tzn. že datový typ proměnné se určí v okamžiku přiřazení hodnoty.
  • Díky tomu má PHP dva typy porovnání, '==' stejný jako v C, a '===' který platí jen když jsou oba dva výrazy stejného typu.
  • Pole jsou heterogenní, mohou tedy obsahovat jakékoli údaje, stejně tak jako jejich indexy.
  • Řetězce lze v PHP zapsat 4 různými způsoby, dva z nich jsou: uzavírat do uvozovek (při vyhodnocení se provede nahrazení proměnných uvnitř) nebo do apostrofů (nahrazuje se jen escape sekvence \').
  • Kromě proměnných, které lze vytvářet i rušit, lze definovat konstanty. Proměnné mají své úrovně viditelnosti a pravidla pro jejich perzistenci (např. proměnná vytvořená ve funkci nebo metodě je po jejím vykonání automaticky zrušena, naproti tomu, proměnná vytvořená např. v cyklu nebo vloženém souboru bude viditelná do skončení programu). Konstanty jsou viditelné ze všech úrovní a po jejich definování je nelze zrušit.
  • PHP podporuje reference, pomocí kterých lze do proměnných ukládat odkazy na libovolnou jinou proměnnou, nebo i prvek jejího pole. Jako reference lze volat i parametry funkce. U každé proměnné PHP eviduje, kolik na ni směřuje referencí, a podle toho se rozhoduje, kdy může kterou proměnnou zrušit.
// 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 'Jsou stejné';
}
else
{
  echo 'To by nešlo';
}
  • PHP do verze 4.2.0 automaticky přejímalo veškeré proměnné (považovalo je za globální) poslané jakoukoliv metodou (POST, GET, COOKIE, ale i SESSION) (pokud administrátor serveru tuto funkci nevypnul) a umožňovalo s nimi dále pracovat.
  • od verze 4.2.0 lze hodnotu získat ze superglobálních proměnných s garancí původu informace (máme zaručeno, že data byla odeslána požadovanou metodou). Administrátor serveru má stále možnost používání globálních proměnných povolit, ale z bezpečnostních důvodů se to silně nedoporučuje.
// 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 chybu úrovně 'notice' o neexistenci proměnné a vrátí NULL
// NULL je zvláštní hodnota libovolného typu proměnných pro stav 'nedefinováno'

Historie jazyka

Význam
červeně staré verze; již nepodporované
žlutá stará verze; stále podporovaná
zelená Současné verze
modrá Budoucí vydání
Řada Verze Datum vydání Poznámka
1.x 1.0.0 8. června 1995 Oficiální název „Personal Home Page Tools (PHP Tools)“. Poprvé byl použit název „PHP“.
2.x 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.x 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.x 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, pokud 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.x 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
5.2.14 22. července 2010 oprava chyb
5.2.15 10. prosince 2010 oprava chyb, poslední verze řady 5.2.x
5.3.0 30. června 2009 jmenné prostory, oprava chyb, změny ve funkcích a doplňcích
5.3.1 19. listopadu 2009 oprava chyb
5.3.2 4. března 2010 oprava chyb, přidání podpory SHA-256 a SHA-512
5.3.3 22. července 2010 oprava chyb, FPM SAPI
5.3.4 10. prosince 2010 oprava chyb, vylepšení FPM SAPI
5.3.5 6. ledna 2011 oprava chyb
5.3.6 17. března 2011 oprava více než 60 chyb
5.3.7 18. srpna 2011  ??
5.3.8 23. srpna 2011 opravuje chybu s MD5
5.4.0 1. března 2012 traits, dereference polí, odstranění některých zastaralých funkcí a direktiv

Externí odkazy