Proměnné a jejich obory
Jste zde
S hodnotami se obvykle nepracuje přímo; ukládají se do proměnných. Slovo proměnná zde znamená v podstatě totéž, co znáte už z matematiky pro základní školu, pouze způsob zápisu je jiný.
Každá proměnná má název (někdy též identifikátor), typ (datový typ) a hodnotu.
Název proměnné v PHP vždy začíná znakem dolaru:$
Nyní upravíme předchozí příklad tak, že hodnotu Ahoj Světe
uložíme do proměnné:
$my_variable = 'Ahoj Světe'; print $my_variable;
Na tomto příkladu si povšimněte následujícího:
- Deklarovali jsme proměnnou s názvem
$my_variable
. - Pro zpřehlednění delších názvů proměnných lze použít podtržítka
_
(nikoliv mezery ani pomlčky!) - Proměnné jsme přiřadili hodnotu - řetězec
Ahoj Světe
. - K přiřazení hodnoty jsme použili tzv. přiřazovací operátor
=
(v příští kapitole se seznámíme s dalšími operátory). - V PHP je možné deklarovat proměnnou také tak, že jí rovnou přiřadíme hodnotu.
- Proměnou jsme vypsali příkazem
print
.
Obor proměnné
Je důležité vědět, že proměnná $my_variable
, kterou jsme v předchozím příkladu deklarovali, je tzv. lokální. To znamená, že je přístupná pouze v daném bloku kódu aplikace - nezaměňujte s blokem Drupalu. Blok kódu je vymezená část kódu, může to být celý (dále nečleněný) skript, ale také např. jednotlivá funkce.
Proměnnou $my_variable
nemůžete zatím použít z žádného jiného místa v Drupalu, než je skript, ve kterém se právě nachází. To je na jednu stranu omezení, ale na druhou stranu výhoda z hlediska bezpečnosti i výkonu: pokud např. někde jinde používáte lokální proměnnou se stejným názvem, není třeba starat se o to, zda tutéž proměnnou používá jiný skript na jiném místě v Drupalu.
Existují však také globální proměnné, které jsou přístupné z jakékoliv části aplikace.
V dokumentaci Drupal API naleznete seznam globálních proměnných.
Abyste ke globální proměnné mohli přistoupit, musíte před ní vložit klíčové slovo global
.
Vyzkoušíme si to na příkladu: vypíšeme globální proměnnou Drupalu $theme
, která obsahuje strojový název právě používaného tématu vzhledu.
global $theme; print $theme;
Zkuste tento skript vykonat v bloku Execute PHP nejprve ve výchozím tématu vzhledu a pak v administračním tématu vzhledu. Výstupem bude vždy strojový název aktuálního tématu vzhledu, které používáte.
Pomocí globálních proměnných Drupalu se můžete dostat k řadě důležitých informací a buď je sdělit uživateli, nebo použít ve vašem kódu k dalšímu zpracování. Většinou se však nejedná o skalární datové typy, proto je nemůžete vypsat tak jednoduše, jako $theme
.
Už jsme se zmínili o univerzálních způsobech výpisu - var_dump()
a var_export()
. Pokud používáte modul Devel, pravděpodobně si k vypisování proměnných oblíbíte funkci, kterou poskytuje právě tento modul - dpm()
.
Vyzkoušejte:
GLOBAL $user; dpm($user);
Výsledek je v tomto případě stejný, jako když na stránce uživatelského účtu klinete na záložku Devel: získáte strukturu a obsah objektu $user
.
Velkou výhodou je přehlednost a postupné rozbalování pouze těch částí, které vás zajímají.
Ale pozor: pokud byste modul Devel neměli zapnutý, výsledkem snahy o použití funkce dpm()
bude fatální chyba (fatal error), protože funkce dpm()
není deklarována (tj. není dispozici). Protože modul Devel nepatří na produkční web, musíte si dát pozor, abyste před spuštěním webu nikde funkci dpm()
nezapomněli. Je proto dobré zvyknout si funkci dpm()
ihned smazat, jakmile zjistíte potřebné informace, případně řádek zakomentovat, pokud se domníváte, že funkci budete ještě později potřebovat.
Zakomentovat znamená udělat z příkazu komentář - vyzkoušejte si:
GLOBAL $user; //dpm($user);
Na tomto místě je třeba také upozornit, že nesprávným zacházením s globální proměnnou $user
, která obsahuje data aktuálně přihlášeného uživatele, může dojít k záměně uživatelů, kdy například běžného uživatele webu zaměníte s hlavním administrátorem. V dalším textu si k tomu řekneme více, nyní postačí, když budete vědět, že s touto proměnnou nesmíte experimentovat (rozhodně ne na produkčním webu).
Nyní už víte, jaký je rozdíl mezi lokální a globální proměnnou. Existuje více oborů proměnných - v tuto chvíli se opět pouze seznamte s jejich názvy.
Obory proměnných v PHP:
- lokální proměnné
- parametry funkcí
- globální proměnné
- superglobální proměnné
- statické proměnné