Autor Zpráva
gaminn
Profil *
Zdravím,

mám funkci, kterou je nutné při prvním spuštění nastavit (poskytnout ji nějaké informace k správné funkci). Tak nějak teoreticky bych to chtěl udělat pomocí klíčového slova static


function x($value, $set = null) {
if(!empty($set)) {
static $settings = $set;
return true;
}

if(!isset($settings)) {
trigger_error('x() needs to be initated', E_USER_WARNING);
return false;
}

// další instrukce
}


První volání funkce by vypadalo x(0, $set); - zde by se funkce nastavila, další volání by byla prostě x(123456), kdy by funkce plnila svůj účel.

Problém je v tom, že v deklaraci statické proměnné nemohu jako její hodnotu přiřadit výraz. Nelíbí se mi příliš používání $GLOBALS, takže to bych zavrhnul ihned. Je jiné, další řešení? Pokud ne, tak budu muset funkci vytvořit jako metodu třídy.
ninja
Profil
static samozrejme pouzit muzes, od toho je. A prirazovat do ni muzes (v PHP4), jinak by byla dost na nic.
gaminn
Profil *
ninja

Při definici statické proměnné je problém, že do ní nemůžeš dát výraz - je tedy nepřípustné použití static $a = $b; (vyvolá parse error)

Je ale fakt, že takový zápis už je ok:

if(!isset($a)) static $a = 0;

$a = $b;


Už jsem to ale stejně vyřešil pomocí OOP.
Toto téma je uzamčeno. Odpověď nelze zaslat.