ugrás a tartalomhoz

Függvénybe ágyazott függvényeknél global használata?

laji · 2006. Már. 18. (Szo), 14.09
Sziasztok. A global használatához kérnék segítséget (php4).
Az "elso" függvénybe vannak ágyazva "masodik" és "harmadik" függvények. Az "elso" és "masodik" függvényeknek szükségük van a kinti $valtozo1-re és $valtozo2-re, "harmadik"-nak nem. A "harmadik" önmagán belül meghívja a "masodik"-at.
<?php
$valtozo1="alma";
$valtozo2="korte";
function elso() {
	global $valtozo1, $valtozo2;
	// használja a két változót
	function masodik() {
		global $valtozo1, $valtozo2;
		// használja a két változót
	}
	function harmadik() {
		// Csinál vmit, s ehhez meghívja masodik()-at.
		$akarmi=masodik();
	}
}
?>
Amit szeretnék megtudni:
1. Szükség van-e masodik()-ban megadni a global-t? (Nem hat-e "lefelé", "befelé" is az elso()-ben kiadott "global" parancs?)
2. Szükség van-e harmadik()-ban is megadni a global-t? Neki nem kell, de a benne meghívott masodik()-nak igen.
3. Van-e vmilyen lehetőség arra, hogy rögtön a két változó létrehozásakor elérhetővé tegyem őket minden függvény számára? Az egy kicsit hosszadalmasnak tűnik, hogy ha $valtozo1-re 117-szer van szükségem egy függvényen belül, akkor 117-szer úgy írjam le, hogy $GLOBALS[valtozo1]. Vagy rosszul értem a használatát? A php.morva.net nem sokat ír róla.
Előre is köszönöm a segítséget.
 
1

global és a függvények

Anonymous · 2006. Már. 18. (Szo), 15.38
a global-t ott kell kiadni, ahol konkrétan szeretnél valamit kezdeni magával az értékkel. a harmadik nevű függvénynek szüksége van a változókra? nem. tehát ott nem kell megadni (2.). viszont ahol használni akarod, ott mindenképpen kell, így a masodik nevű függvényben is (1.).

a 3. kérdésre a válasz: nincs lehetőség. ellenben van olyan, hogy define, és van olyan is, hogy paraméter, vagy argumentum. ezek használatát javaslom.

gex
2

3. pont

sayusi · 2006. Már. 18. (Szo), 15.42
Szia!

A harmadik pontot nem értem. Pontosítanád?

Az egészre véleményem, hogy próbáld a problémádra a megoldást. kb 10 percig tart írni egy ilyen példát.

Illetve a http://www.php.net/manual/hu/language.functions.php tudom javasolni.
3

Heuréka - ÁLLANDÓ!

laji · 2006. Már. 18. (Szo), 16.11
Köszönöm mindkettőtök segítségét. Mindenképp nagyon hasznos tudnom azt, hogy ezek szerint csak a függvény létrehozásának, nem pedig meghívásának helyén kell elérhetőnek lenniük a szükséges változóknak.
Jelen esetemre pedig (s ez a válasz Sayusi kérdésére is): utólag tényleg elég kézenfekvő, hogy ha kell nekem egy mindenütt elérhető, s sehol nem módosuló (csak felhasználandó) változó - hát az az állandó... :)

További szép napot!