Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
PHP - Část X. (Proměnné ve funkcích)
15. srpna 2000, 00.00 | V minulém díle seriálu o PHP jsme se naučili deklarovat vlastní funkce. Dnes se podíváme jak v těchto funkcích používat proměnné..
GLOBÁLNÍ PROMĚNNÉ
- pokud ve skriptech máme definovány nějaké vlastní funkce, už neplatí
pravidlo, že se ve skriptu nemohou vyskytovat dvě proměnné se stejným
identifikátorem (jménem). Proměnné, které jsou definovány uvnitř funkce,
nemají žádný vliv na proměnné umístěné mimo definici funkce, a to i v případě,
že mají stejný identifikátor.
Př.
function vypocet()
{
$x = 10;
$y = 20;
}
$x = 100;
$y = 200;
vypocet();
$vysledek = $x + $y;
echo $vysledek;
Tento skript vypíše výsledek 300, protože volání funkce vypocet()
;
nijak neovlivní hodnoty proměnných $x
a $y
definovaných mimo tělo funkce. Proměnným, které jsou definovány mimo tělo
funkce, se říká globální proměnné. Občas však můžeme potřebovat
pracovat s globálními proměnnými i uvnitř funkcí. Potom musíme uvnitř
funkce určit, s kterými globálními proměnnými může funkce pracovat. K
tomu slouží příkaz global
. Za ním následuje čárkami oddělený
seznam globálních proměnných, které mohou být ve funkci použity.
Př.
function vypocet()
{
global $x;
$x = 10;
$y = 20;
}
$x = 100;
$y = 200;
vypocet();
$vysledek = $x + $y;
echo $vysledek;
Tento skript vypíše výsledek 210, protože proměnná $x
ve funkci vypocet();
je totožná s proměnnou $x
definovanou mimo tělo funkce, tzn. může
měnit její hodnotu. Po vykonání funkce vypocet();
se změní
hodnota $x
ze 100 na 10. Proměnná $y
zůstane nezměněna,
protože ve funkci vypocet();
není určena jako globální.
Existuje ještě jedna možnost, jak ve funkci určit globální proměnné, a to
pomocí asociativního pole $GLOBALS
, ve kterém jsou přístupné
všechny globální proměnné. Jako index prvku tohoto pole se používá název
proměnné, ale bez znaku dolaru.
Př.
function vypocet()
{
$GLOBALS["x"] = 10;
$y = 20;
}
$x = 100;
$y = 200;
vypocet();
$vysledek = $x + $y;
echo $vysledek;
Důsledky tohoto skriptu jsou stejné jako v předchozím příkladu. Při vytváření vlastních funkcí můžeme samozřejmě definovat funkce i uvnitř těla jiné funkce. Toto použití je ale dosti nepraktické, protože neexistuje způsob, jak se z vnořené funkce dostat k proměnným funkce, která je o úroveň výš. Z vnořených funkcí můžeme přistupovat pouze ke globálním proměnným.
STATICKÉ PROMĚNNÉ
- tyto proměnné se používají ve funkcích, které jsou volány opakovaně,
ale proměnné v nich chceme inicializovat jen při prvním volání této
funkce. K označení proměnné za statickou slouží příkaz static
.
Typickým příkladem použití statické proměnné je funkce jako počítadlo:
function pocitadlo()
{
static $i = 0;
$i++;
echo $i;
}
Tato funkce vždy po zavolání vypíše, kolikrát již
byla volána. Kdybychom proměnnou $i
neoznačili za statickou, vždy
po zavolání funkce by se proměnná $i
zinicializovala na hodnotu
0 a funkce by vždy vypsala 1.
PŘEDÁVÁNÍ PARAMETRŮ ODKAZEM
- mimo standardní předávání parametrů funkci hodnotou, existuje ještě
tzv. předávání parametrů odkazem. Parametry se funkci samozřejmě mohou předávat
v proměnných. V PHP můžeme psát i funkce, které mění obsah proměnné,
která je použita jako parametr funkce. V tomto případě se funkci jako
parametr nepředává hodnota proměnné, ale odkaz na ni. Tyto proměnné se v
definici funkce označí znakem "&", který dá PHP najevo, že se
jedná o parametr, který je předáván odkazem.
Př.
function priklad(&$x, $y)
{
$x = 10;
$y = 20;
}
$a = 100;
$b = 200;
priklad($a, $b);
echo "$a, $b";
Skript
vypíše 10, 200. V proměnné $a
bude uložena hodnota 10, protože je předána
odkazem, v proměnné $b
bude uložena původní hodnota 200, protože je funkci
předána jako parametr předaný hodnotou. Předávat parametry odkazem můžeme
i funkcím, které mají standardně definovány pouze parametry předávané
hodnotou. V tomto případě musíme znak "&" před proměnnou použít
při volání funkce, tím dáme PHP najevo, že se jedná o parametr předaný
odkazem.
Př.
function priklad($x, $y)
{
$x = 10;
$y = 20;
}
$a = 100;
$b = 200;
priklad($a, &$b);
echo "$a, $b";
Tento
skript vypíše 100, 20. V proměnné $a
bude hodnota 100, v proměnné
$b
bude hodnota 20, protože je funkci předána odkazem.
REKURZIVNÍ VOLÁNÍ
FUNKCÍ
- jednoduše řečeno - při rekurzivním volání se uvnitř těla funkce
použije volání jí samé. Používání rekurzivního volání se ale příliš
nedoporučuje, protože při složitém použití volání funkce může dojít
k přetečení zásobníku. Je tedy lepší ho používat jen v případech, kdy
je to opravdu nutné, jinak se mu vyhýbat.
V příštím článku se vrátíme k objektům - tentokrát podrobněji...
Obsah seriálu (více o seriálu):
- PHP část I. - Úvod do jazyka
- PHP část II. - Instalace
- PHP - Část V. (Operátory)
- PHP - Část VIII.
- PHP - Část IX. (Vlastní funkce)
- PHP - Část X. (Proměnné ve funkcích)
- PHP - Část XI.
- PHP - Část XII. (Regulární výrazy)
- PHP - Část XIII. (Regulární výrazy podruhé)
- PHP - Část XIV. (PHP a databáze)
- PHP - Část XV. (Instalace MySQL ve Windows)
- PHP - Část XVI. (Instalace MySQL na LINUXu)
- PHP - Část XVII. (MySQL - vytvoření nové databáze)
- PHP - Část XVIII. (Vkládání dat do databáze)
- PHP - Část XIX. (MySQL - získávání dat z databáze)
- PHP - Část XX. (SQL - získávání dat z databáze II.)
- PHP - Část XXI. (SQL - získávání dat z databázových tabulek III)
- PHP - Část XXII. (MySQL - modifikace a mazání dat v tabulce)
- PHP část XXIII. - MySQL - přístupová práva
- PHP část XXIV. - PostgreSQL
- PHP část XXV. - Cookies
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007