Když jsme řešili proměnné, jistě si vzpomenete, že každá proměnná má v kódu nějakou hodnotu, která se postupem v programu mění. Dnes se podíváme na Konstanty.
Konstanta je v podstatě proměnná, jen jak již název napovídá, tak se v průběhu programu nemění, je pořád stejná, viz:
define ("BROWSER", "Mozilla/5.0");
echo "Váš prohlížeč je " . BROWSER;
?>
Dobrým zvykem je psát konstanty velikými písmeny, tedy BROWSER je konstanta, ve které je uložen řetězec „Mozilla/5.0“. Každá konstanta se definuje slovem define a není před ní znak dolaru, dá se o ní říci, že je to výraz.
Výrazy
Výraz je vše, co má nějakou hodnotu, nemusí jít jen třeba o řetězec, prostě vše, co má hodnotu, například funkce, kterou jsme použili ve druhém díle tohoto seriálu, Time().
$sekundy = Time();
echo $sekundy;
?>
V tomto příkladu jsme volali funkci Time(), která je výraz, její hodnotu jsme přiřadili proměnné $sekundy a tuto proměnnou jsme následně potom vypsali. Pokud přiřadíme nějakou hodnotu proměnné, je to chápáno jako výraz a je chápáno jako příkazová hodnota.
Preinkrementace a postinkrementace
Ano, tyto dvě slova vypadají zvláštně, možná až děsivě, nicméně není čeho se bát, jedná se o mechanismus, při kterém výraz mění sebe, díky sám sobě. Uvedu dva příklady, které sice vrací stejnou hodnotu, ale jsou úplně jiné a později to rozvedu.
$cislo = 5;
$cislo++;
//vratí číslo 6
?>
Druhý příklad:
$cislo = 5;
++$cislo;
//vrátí také 6
?>
Ačkoliv se oba příklady zdají, že jsou úplně stejné, jistý rozdíl v nich je. Pokud se nám do kódu připlete ještě jedna proměnná, výsledek již bude jiný:
$cislo = 5;
$dalsi_cislo = $cislo++;
//vrátí číslo 5
?>
Druhý příklad:
$cislo = 5;
$dalsi_cislo = ++$cislo;
//vrátí číslo 6
?>
Z obou příkladů je vidět, že každý kód vrátí něco jiného, nyní Vám vysvětlím proč. V prvním případě se jedná o postinkrementaci, protože hodnota proměnné $cislo byla přiřazena do proměnné $dalsi_cislo předtím, než byla změněna. Ve druhém příkladu se jedná o preinkrementaci, proměnná $cislo byla změněna předtím, než byla přiřazená do proměnné $dalsi_cislo, proto se změnila. Jistě Vás napadne, jak zvýšit hodnotu o více než o jedna, jde to takto:
$cislo = 5;
$cislo +=5;
//proměnná číslo bude 10
?>
Takto lze změnit hodnotu proměnné o více než o jedna, je to velmi jednoduché, protože lze tímto způsobem k sobě spojit i dva řetězce:
$retezec = "prvni slova ";
$retezec .= " dalsi slova";
//výsledek co bude v proměnné řetězec je "první slova dalsi slova"
?>
Preinkrementaci a postinkrementaci je vhodné používat skoro kdekoliv, kde je k tomu prostor, protože je optimalizovaná pro rychlost, nicméně v některých jazycích obsažena není, tedy pokud přecházíte například z asp, asi si chvíli budete zvykat.