Jazyk PHP (Hypertext PreProcessor) je intepretovaný jazyk – zdrojový kód je přímo spouštěn virtuálním strojem PHP bez nutnosti kompilace do strojového kódu. To je výhoda pro vývojáře, protože je jejich zdrojový kód snadno přenositelný.
Jazyk PHP je celkem jednoduchý a je tedy zejména pro začínající programátory. Využívá se k vytváření menších až středních internetových aplikací, například osobních webů, blogů, e-shopů, wikipedií…
Web PHP s dokumentací se nachází na adrese www.php.net.
PHP skripty se běžně píší v textovém editoru (např. „PSPad“:[http://www.pspad.com/cz/) a ukládají na webový server do souborů s příponou .php. Pokud je PHP správně nastaveno, po zadání správné adresy požadovaného souboru je skript spuštěn a jeho výstup zobrazen v prohlížeči.
Při zpracování souboru zpracuje interpreter PHP jen to, co se nachází mezi speciálními značkami <?php a ?>. Zbytek jednoduše ignoruje (pošle to na výstup tak, jak to je). To umožňuje jednoduše kombinovat kód PHP a HTML.
kód v jazyce PHP - Zobrazit
kód v jazyce PHP - Zobrazit
Proměnná je část paměti, se kterou může program během svého spuštění pracovat. Ukládáme do nich data, jako například čísla, řetězce, pole, instance tříd a další. Práce s proměnnými patří mezi základní operace každého programu. Ani PHP skripty nejsou výjimkou.
Narozdíl od jazyka C, C++, Java a podobných, nemají proměnné v PHP pevně určený (nadeklarovaný) typ. Do jedné proměnné lze uložit mnoho různých typů hodnot a ty lze dokonce za běhu programu střídat. Typy se tím pádem nikde neuvádějí – ani v deklaraci, ani v parametrech funkcí.
Zde jsou základní typy hodnot, které mohou být v proměnných uloženy:
kód v jazyce PHP - Zobrazit
I když je PHP velmi benevolentní, doporučuji se řídit dle následujících zásad:
Proč to vysvětluji? Je potřeba si uvědomit, jak zhruba fungují „střeva“ PHP a nesnažit se o zbytečné optimalizace tam, kde jich není třeba. Uvedené poznatky také využijete při psaní funkcí a procedur, kde se parametry chovají podobně jako reference.
Jednorozměrné pole je lineární, homogenní a sekvenční datová struktura – zjednodušeně řečeno tedy jakási kolekce prvků. Využívá se pro uložení většího množství dat stejného typu, zpravidla proto, aby je bylo možné zpracovat hromadně pomocí cyklu.
Prvky pole v PHP (podobně jako proměnné) nemusí být stejného typu. V jednom poli se tedy mohou nacházet čísla, řetězce, instance tříd a dokonce i další pole.
Pole se v jazyce PHP inicializuje takto:
kód v jazyce PHP - Zobrazit
Nyní je možné s polem pracovat, například do něj vkládat prvky, odebírat je a měnit. Pole v PHP nemá pevně danou velikost, je tedy možné brát jej jako „pytel“, do kterého lze neomezeně sypat prakticky cokoliv. Příliš se nedoporučuje míchat asociativní a obyčejná pole, protože může vzniknout zmatek s indexy a klíči.
kód v jazyce PHP - Zobrazit
Každý prvek v poli má svůj index, který jej jednoznačně určuje. Indexy začínají od nuly. Pokud používáme pole asociativní, můžeme k prvkům navíc přistupovat pomocí jejich klíče.
kód v jazyce PHP - Zobrazit
Nikdy moc nemíchejte způsoby přístupu k prvkům, jinak vás čeká peklo. Zde je jeden odstrašující příklad pro představu:
kód v jazyce PHP - Zobrazit
V PHP obvykle není nutné cokoliv mazat, protože to za nás udělá virtuální stroj – ale někdy potřebujeme objekty odstraňovat kvůli určité funkcionalitě v aplikaci. Mazání provedeme pomocí speciálního konstruktu unset, který jako parametr vyžaduje prvek, který chceme odstranit.
kód v jazyce PHP - Zobrazit
V každém programovacím jazyce se můžeme setkat s podmínkami a cykly. Právě ty umožňují programu reagovat na dvě různé situace jinak a opakovaně provádět podobné operace nad velkým množstvím dat.
Podmínka je jazykový konstrukt, který na základě výsledku daného logického výrazu rozhoduje o provedení či přeskočení nějakého bloku příkazů. Ukážeme si pár jednoduchých příkladů.
Podmínka začíná klíčovým slovem if.
kód v jazyce PHP - Zobrazit
Klíčové slovo else umožňuje programu reagovat i na situace, kdy podmínka splněna není.
kód v jazyce PHP - Zobrazit
Následující příklad ukazuje vnoření podmínek do sebe a také zjednodušení pomocí speciálního klíčového slova elseif.
kód v jazyce PHP - Zobrazit
Jazykový konstrukt switch v určitých případech velmi zjednodušuje zápis algoritmu. Jedná se o rozhodovací mechanismus, který vyhodnotí výraz a skočí na ten řádek, který je výslednou hodnotou označen (case). Od tohoto řádku dál vykoná program všechny příkazy, dokud nenarazí na klíčové slovo break (může tedy „přejet“ i na další case). Pokud hodnota neodpovídá ani jednomu případu, skočí se na nepovinný výchozí příkaz (default).
kód v jazyce PHP - Zobrazit
Syntaxe: while (výraz) {příkazy}
Cyklus while je nejjednodušším cyklem v PHP. Na začátku každé iterace je nejprve vyhodnocen výraz v příkazu while. Je-li výsledek roven TRUE, provede se vnořený blok příkazů a je spuštěna další iterace. Pokud je výraz již před začátkem první iterace roven FALSE, vnořený blok se neprovede vůbec.
kód v jazyce PHP - Zobrazit
Syntaxe: do {příkazy} while (výraz)
Cyklus do while je velmi podobný cyklu while, ale narozdíl od něj je výraz v příkazu while vyhodnocován až na konci každé iterace. Je tedy zaručeno, že se vnořený blok příkazů provede vždy alespoň jednou.
kód v jazyce PHP - Zobrazit
Syntaxe: for (výraz1; výraz2; výraz3) {příkazy}
Cyklus for je nejsložitějším cyklem v PHP. Skládá se ze tří výrazů:
kód v jazyce PHP - Zobrazit
V cyklech je možné použít příkazy break a continue. Jejich význam je následující:
Následující příklad ukazuje použití příkazů break a continue.
kód v jazyce PHP - Zobrazit
Funkce a procedury jsou základními stavebními bloky strukturovaných programů. Kód, který se opakuje na více místech, je dobré prohlásit za samostatný podprogram a ten na odpovídajících místech pouze spustit – zavolat.
Lepší struktura kódu umožňuje dosahovat více úrovní abstrakce a klade tak menší požadavky na paměť programátora. Celý tento proces by se dal přirovnat k matematické substituci.
Funkce a procedury pomáhají zpřehlednit kód, zvýšit modularitu a tak usnadnit údržbu i rozšiřování programu.
Rozdíl mezi funkcí a procedurou je pouze formální – procedura nevrací žádnou hodnotu, zatímco funkce ano. V PHP je tento rozdíl nepodstatný, funkce i procedury se deklarují i volají stejně. Proto se v dalším textu bude vyskytovat pojem funkce, neboť je obecnější.
Funkce mohou být volány s parametry – hodnotami, které ovlivňují její průběh. Počet parametrů je pro každou funkci pevně daný. Funkce je před použitím nutné nadeklarovat – tedy definovat již zmíněné parametry a tělo funkce – tedy program, který se provede po jejím zavolání.
Funkce se deklaruje takto:
kód v jazyce PHP - Zobrazit
Funkce se dvěma parametry a návratovou hodnotu takto:
kód v jazyce PHP - Zobrazit
Funkce bez parametrů se volá takto:
kód v jazyce PHP - Zobrazit
A funkce s parametry takto:
kód v jazyce PHP - Zobrazit
Návratovou hodnotu funkce lze dokonce ignorovat (není to však známka špatného kódu?):
kód v jazyce PHP - Zobrazit
Jádro PHP spolu s moduly obsahuje velké množství věstavěných funkcí. Jejich seznam naleznete na webu PHP. Je lepší používat tyto funkce než si ke stejným účelům programovat vlastní, protože jsou optimalizované a podobně jako virtuální stroj zkompilované do strojového kódu.
Výrazem rozumíme syntakticky správnou posloupnost operandů a operátorů, která zpravidla vrací nějaký výsledek. Příkladem výrazu může být matematický výraz, logický výraz (vrací výsledek) nebo volání funkce (vrací návratovou hodnotu).
Matematické výrazy se používají všude tam, kde chceme něco vypočítat. Logické výrazy využijeme především v podmínkách.
kód v jazyce PHP - Zobrazit
| Příklad | Operace |
|---|---|
| -$a | opačná hodnota k $a |
| $a + $b | součet $a a $b |
| $a – $b | rozdíl $a a $b |
| $a * $b | součin $a a $b |
| $a / $b | podíl $a a $b |
| $a % $b | zbytek z $a po dělení $b |
kód v jazyce PHP - Zobrazit
| Příklad | Operace |
|---|---|
| ! $a | negace $a |
| $a and $b | $a a zároveň $b |
| $a or $b | $a nebo $b |
| $a xor $b | $a nebo $b, ale ne zároveň |
| $a && $b | $a a zároveň $b |
| $a || $b | $a nebo $b |
Rozdíl mezi operátory and, or a &&, || je v prioritě vyhodnocování.
kód v jazyce PHP - Zobrazit
| Příklad | Operace |
|---|---|
| $a == $b | $a rovná se $b |
| $a === $b | $a je identické s $b (stejná hodnota, stejný typ) |
| $a != $b | $a je různé od $b |
| $a <> $b | $a je různé od $b |
| $a !== $b | $a není identické s $b (různá hodnota nebo jiný typ) |
| $a < $b | $a je menší než $b |
| $a <= $b | $a je menší nebo rovno $b |
| $a > $b | $a je větší než $b |
| $a >= $b | $a je větší nebo rovno než $b |