PHP globális változó probléma
Sziasztok,
A fontos, globálisan szükséges változókat $_ -al kezdődő névvel használom. Pl. bejelentkezett felhasználó $_user, beállítások: $_config, stb.
Hogy könnyebben el tudjam érni őket létrehoztam egy függvényt:
function h($type) {
global ${"_".$type};
return ${"_".$type};
}
így bármikor láthatom a bejelentkezett user emailcímét például így: h(user)->email.
Működik is a dolog szuperül, leszámítva a destruktoroknál, de szabályszerűséget itt sem véltem felfedezni.
Néha egyszerűen üresen tér vissza a h() függvény, máskor működik. Ha üres, pedig nem azt várom, és kipróbálom így:
global $_config;
echo $_config->path;
Akkor működik.
Számomra érthetetlen, de talán csak valami banális dolog.
Várom az ötleteket!
Köszi előre is!
■ A fontos, globálisan szükséges változókat $_ -al kezdődő névvel használom. Pl. bejelentkezett felhasználó $_user, beállítások: $_config, stb.
Hogy könnyebben el tudjam érni őket létrehoztam egy függvényt:
function h($type) {
global ${"_".$type};
return ${"_".$type};
}
így bármikor láthatom a bejelentkezett user emailcímét például így: h(user)->email.
Működik is a dolog szuperül, leszámítva a destruktoroknál, de szabályszerűséget itt sem véltem felfedezni.
Néha egyszerűen üresen tér vissza a h() függvény, máskor működik. Ha üres, pedig nem azt várom, és kipróbálom így:
global $_config;
echo $_config->path;
Akkor működik.
Számomra érthetetlen, de talán csak valami banális dolog.
Várom az ötleteket!
Köszi előre is!
Globalis
$GLOBALS
tombot, abban megtalalod amit keresel, foleg ha OOP-zel.class H{ protected static
ez egy gagyi implementáció de
if (!array_key_exists($key, self::$instances)) {
self::$instances[$key] = $obj;
}
}
nem mondtam, hogy használja
Globális változók
Ha nem vagy biztos magadban, de azt tudod, hogy az értékük futás közben nem fog változni (a konfigurációs értékek tipikusan ilyenek), a legegyszerűbb, ha konstanst csinálsz belőlük:
define('KONFIG_' . strtoupper($valtozo), $ertek);
}
konstans('szelesseg', 20);
print KONFIG_SZELESSEG;
Vedd figyelembe, hogy a konstansok csak skaláris és null értékeket vehetnek fel.
Ha a globális változók értékei futás közben változhatnak, akkor trükközhetsz, de nincs mit tenni, figyelni kell rájuk.