Na jazyk PHP jste jist∞ slyÜeli mnoho chvßly. Pokud chcete s jeho pomocφ zkusit vytvo°it n∞jakou p∞knou webovou aplikaci, t°eba vßm p°ijde vhod nßÜ kurz zßklad∙ PHP.
┌vod
V p°edchozφm Φφsle Chipu se mohli u₧ivatelΘ oblφbenΘho skriptovacφho jazyka PHP seznßmit s postupem instalace aktußlnφ verze tohoto hypertextovΘho preprocesoru, a sice s instalacφ na servery od spoleΦnosti Microsoft (IIS a PWS) provozovanΘ na operaΦnφch systΘmech tΘ₧e spoleΦnosti. Od dneÜnφho Φφsla p°inßÜφme rychlokurz PHP urΦen² Φtenß°∙m, kte°φ ji₧ slyÜeli o p°ednostech a charakteristick²ch vlastnostech tohoto jazyka a rozhodli se nauΦit nezbytnΘ zßklady pot°ebnΘ pro vytvß°enφ dynamick²ch webov²ch aplikacφ prßv∞ pomocφ zmφn∞nΘho nßstroje (p°ipome≥me, ₧e s jazykem PHP jste se mohli seznßmit v sΘrii t°φ Φlßnk∙ od Jana Stoklasy, je₧ byly v∞novßny skriptovacφm jazyk∙m pro web a kterΘ vyÜly v lo≥sk²ch Chipech 9 - 11).
V tomto ·vodnφm dφle budou popsßny naprostΘ zßklady PHP - zßklady syntaxe a °φdicφ struktury. DalÜφ dφly budou ji₧ zam∞°eny na prßci s webov²mi formulß°i a na propojenφ PHP s r∙zn²mi databßzemi.
Pozn.: Nßskok budou mφt ti Φtenß°i, kte°φ n∞kdy v minulosti programovali v C/C++ (nebo v jazyce s podobnou syntaxφ), nebo¥ - jak brzy poznßte - PHP a C/C++ majφ mnoho spoleΦnΘho.
ZaΦφnßme
P°edpoklßdßm, ₧e Φtenß°i se ji₧ s HTML (Hypertext Markup Language) setkali a zpoΦßtku je bude logicky nejvφce zajφmat, jak lze umφstit PHP skript do HTML k≤du. K tomuto ·Φelu byly navr₧eny nßsledujφcφ znaΦky. Samoz°ejm∞ je zachovßna kompatibilita se standardem SGML (Standard Generalized Markup Language), tedy se specißlnφ sekvencφ znak∙, je₧ v dokumentu odd∞lujφ p°φkazy od textu:
<? a ?>
<?php a ?>
<script language="php'> a </script>
<% a %>
ZaΦlen∞nφ t∞chto znaΦek je patrnΘ z nßsledujφcφho p°φkladu, ve kterΘm je pomocφ p°φkazu echo vypsßn v prohlφ₧eΦi text: Ahoj, sv∞te, zaΦφnßme! Komentß°e jsou v textu odd∞leny pomocφ dvojice znak∙ // (vÜe, co je napsßno za t∞mito znaky na danΘm °ßdku, bude pova₧ovßno za komentß°). Pro vlo₧enφ delÜφho komentß°e - vφce°ßdkovΘho - se pou₧φvß uvozujφcφ znak /* a ukonΦujφcφ znak */.
<html>
<body>
<?php // zaΦßtek k≤du
echo "Ahoj, sv∞te, zaΦφnßme!"; //v²pis textu
?>
</body>
</html>
Tento soubor, pojmenujme jej nap°φklad jako "vypiÜ.php", musφme samoz°ejm∞ nejprve umφstit do adresß°e, ve kterΘm je nastavena podpora PHP skript∙.
Jak ji₧ vφme, hypertextov² preprocessor PHP dynamicky vytvo°φ novou WWW strßnku, ve kterΘ p∙vodnφ PHP k≤d nahradφ po₧adovan²m HTML k≤dem. V²sledkem p°edchozφho skriptu bude nßsledujφcφ vygenerovan² k≤d:
<html>
<body>
Ahoj, sv∞te, zaΦφnßme!
</body>
</html>
VÜe se toΦφ kolem prom∞nn²ch
TΘm∞° vÜe v programovßnφ se toΦφ kolem prom∞nn²ch (prom∞nnß p°edstavuje datovou strukturu, jejφ₧ hodnota se m∙₧e v pr∙b∞hu zpracovßnφ programu dynamicky m∞nit). Pomocφ prom∞nn²ch jsou uchovßvßny hodnoty, s nimi₧ v programu/skriptu operujeme. V PHP poznßme prom∞nnΘ velice rychle, nebo¥ vÜechny musφ obsahovat povinn² znak $, nap°φklad prom∞nnß a se ve skriptu skr²vß za $a. Na rozdφl od ji₧ zmi≥ovanΘho jazyka C provßdφ PHP spoustu prßce automaticky za nßs - nap°φklad deklarovßnφ prom∞nn²ch v tomto jazyce odpadß (deklarace je p°φkaz, kter² udßvß typ prom∞nnΘ a jejφ jmΘno). P°i prvnφm pou₧itφ se prom∞nnß nadeklaruje sama a je jφ takΘ p°i°azen urΦit² typ.
Nap°φklad p°φkaz
$a=10
p°i°adφ do prom∞nnΘ $a Φφslo 10 (znak rovnφtka "=" tedy slou₧φ k p°i°azenφ). $a bude automaticky celΘ Φφslo.
Tφmto p°φkladem jsme se dostali k prvnφmu typu, kter²m je integer (celΘ Φφslo). DalÜφmi datov²mi typy jsou:
array (pole) - nap°. $d[0]="abc"; //jednodimenzionßlnφ pole
- nap°. $d[0][0]="def"; //vφcedimenzionßlnφ pole (dvoj-)
a object (objekt)
╪φdicφ struktury
Vysv∞tlenφ a pochopenφ prßce s °φdicφmi strukturami je nezbytnou podmφnkou pro dalÜφ psanφ skript∙ (ve vÜech jazycφch), nebo¥ jasn∞ definujφ a °φdφ dalÜφ b∞h programu. Proto ani v tomto rychlokurzu nez∙staneme "pozadu" a popφÜeme si nejΦast∞jÜφ struktury pomocφ jednoduch²ch p°φklad∙.
P°φkazy pro v∞tvenφ programu
Mezi nejpou₧φvan∞jÜφ struktury pat°φ podmφnky, pomocφ kter²ch je podle n∞jakΘ zadanΘ podmφnky urΦovßn dalÜφ b∞h (v∞tvenφ) skriptu.
P°φkaz IF
if ($aa==$bb) // kdy₧ je $aa rovno $bb
echo "aa je stejnΘ jako bb"; //vypiÜ- aa je stejnΘ jako bb
Nebo forma srozumiteln∞jÜφ pro "CΘΦka°e":
if ($aa==$bb) {
echo "aa je stejnΘ jako bb";
}
Podmφnka IF ELSE
if ($aa>$bb) { // kdy₧ je $aa v∞tÜφ ne₧ $bb
echo "aa je v∞tÜφ ne₧ bb"; //vypiÜ- aa je v∞tÜφ ne₧ bb
Mnozφ programßto°i postupem Φasu narazφ na po₧adavek, kter²m je mo₧nost/nutnost opakovßnφ jistΘ Φßsti skriptu podle zadanΘ podmφnky. Pro tento ·Φel se v programovßnφ pou₧φvajφ cykly, o kter²ch si dßle povφme.
Velice Φasto pou₧φvan²m je cyklus WHILE - tento iteraΦnφ p°φkaz testuje podmφnku cyklu p°ed pr∙chodem cyklem - cyklus tedy nemusφ prob∞hnout ani jednou.
$a=20; //p°i°azenφ Φφsla 20 do prom∞nnΘ $a
while ($a>0) //dokud je $a v∞tÜφ ne₧ 0 pak d∞lej
{
print $a; // vypsßnφ hodnoty prom∞nnΘ $a
$a--; //dekrementovßnφ po pou₧itφ=p∙vodnφ hodnota v²razu snφ₧ena o 1
}
Cyklus DO-WHILE - v tomto cyklu se podmφnka testuje a₧ po pr∙chodu cyklem - cyklus prob∞hne nejmΘn∞ jednou.
$a=20; //p°i°azenφ Φφsla 20 do prom∞nnΘ $a
do //d∞lej (dokud $a>0)
{
print $a; // vypsßnφ hodnoty prom∞nne $a
$a--; // dekrementovßnφ po pou₧itφ=p∙vodnφ hodnota v²razu snφ₧ena o 1
for ($i = 1; $i <= 10; $i++) { // pro $i od 1 do 10 inkrementuj $i
print $i; // vypsßnφ $i -> 12345678910
}
P°φkaz FOREACH - dalÜφ p°φkaz cyklu (jakßsi modifikace p°edchozφho cyklu), kter² op∞t pou₧ijeme v p°φpad∞, ₧e dop°edu znßme po₧adovan² poΦet pr∙chod∙ cyklem. Tento p°φkaz je v PHP zahrnut a₧ od verze 4 a umo₧≥uje nßm iterovat p°es pole.
Pozn.: Nemusφme pou₧φt p°φkaz reset(), proto₧e ukazatel je p°ed prvnφm pr∙chodem cyklu automaticky nastaven na prvnφ prvek pole.
Uve∩me p°φklad:
/* u cyklu foreach je v ka₧dΘm pr∙chodu cyklem hodnota aktußlnφho prvku $a p°i°azena do prom∞nnΘ $v a index pole je zv²Üen o 1 */
$a = array (1, 5, 6, 20);
foreach ($a as $v) {
print "SouΦasnß hodnota z \$a: $v.\n";
}
V²sledkem bude nßsledujφcφ vygenerovan² HTML k≤d (v souboru byly navφc pouze dopln∞ny HTML znaΦky, mezi n∞₧ byl skript vlo₧en):
<HTML>
<BODY>
SouΦasnß hodnota z $a: 1.
SouΦasnß hodnota z $a: 5.
SouΦasnß hodnota z $a: 6.
SouΦasnß hodnota z $a: 20.
</BODY>
</HTML>
Pozn.: Pro nßsilnΘ p°eruÜenφ vykonßvßnφ cykl∙ (for, while a switch) se pou₧φvß p°φkaz break. P°φkaz continue slou₧φ k p°eskoΦenφ zb²vajφcφch p°φkaz∙ cyklu a pro zahßjenφ dalÜφ iterace.
Funkce
Pomocφ funkcφ m∙₧eme dosßhnout opakovßnφ urΦitΘ Φßsti programu (stejnΘ sekvence p°φkaz∙), ani₧ bychom museli danou Φßst v k≤du znovu opisovat.
Nap°φklad nßsledujφcφ funkce mß dva vstupnφ parametry ($a a $b) a jejφm v²sledkem bude vrßcenφ hodnoty v∞tÜφho z parametr∙.
function Max ($a,$b) //funkce Max se vstupnφmi parametry $a a $b
{
return $a>$b ? $a : $b; //vrßcenφ v²sledku funkce Max
}
Pozn.: V tomto p°φkladu jsme pou₧ili podmφn∞n² v²raz, tzv. ternßrnφ operßtor, kter² lze slovn∞ interpretovat takto: kdy₧ $a je v∞tÜφ ne₧ $b, bude vrßcena hodnota $a, jinak $b.
Volßnφ a v²pis v²sledku funkce ve skriptu m∙₧e vypadat nap°φklad takto:
echo Max(10,12); // vypφÜe se 12
Platnost prom∞nn²ch
Pokud budeme pracovat s funkcemi, postupem Φasu urΦit∞ narazφme na otßzku rozsahu platnosti prom∞nn²ch a na po₧adavek, jak zp°φstupnit globßlnφ prom∞nnou uvnit° funkce. Pro tento p°φpad se v PHP pou₧φvß p°φkaz global, kter²m danou prom∞nnou ve funkci zp°φstupnφme. Zde se PHP podstatn∞ liÜφ od jazyka C, ve kterΘm jsou globßlnφ prom∞nnΘ automaticky p°φstupnΘ uvnit° funkcφ.
P°φklad funkce napsanΘ v PHP, ve kterΘ zm∞nφme hodnotu globßlnφ prom∞nnΘ:
function JmenoF()
{
global $a1; //zp°φstupn∞nφ prom∞nnΘ $a1 pomocφ p°φkazu global
$a1++; //post-inkrementovßnφ
}
$a1=100; // prom∞nnΘ $a1 p°i°azena hodnota 100
JmenoF(); // volßnφ funkce JmenoF
Print $a1; //v²pis $a1 ==101
Zßv∞r
V ·vodnφm dφle naÜeho rychlokurzu PHP jsme se seznßmili s ·vodnφmi znalostmi nutn²mi pro dalÜφ tvorbu dynamicky generovan²ch WWW strßnek pomocφ oblφbenΘho skriptovacφho jazyka - PHP. V p°φÜtφm dφle postoupφme op∞t o kr∙Φek dßle - povφme si, jak na webovΘ formulß°e.
[ Milan Pinte I pinte@atlas.cz ]
infotipy:
PHP.CZ
www.php.cz
PHPBuilder.com
www.phpbuilder.com
Zend / Where PHP meets eBusiness
www.zend.com
PHP: php and mysql examples and resources from WeberDev.com
www.weberdev.com
Literaratura:
[1] Kosek, J.: PHP - tvorba interaktivnφch internetov²ch aplikacφ Podrobn² pr∙vodce, 1. vydßnφ, Grada Publishing, Praha 1999, 492 stran.