PHP - Část X. (Proměnné ve funkcích) - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: