Jednou z novinek v PHP 5 jsou statické proměnné v definici třídy. Používají se takto:
class Foo {
static $bar = 10;
}
Dnes se mi ale podařilo dosáhnout stejné funkčnosti i v PHP 4. Stojí za tím pekelná finta, ale funguje naprosto spolehlivě:
class Foo {
// toto je zatím obyčejná proměnná
var $bar = 10;
function Foo() {
static $bar;
// inicializace na výchozí hodnotu
if (!isset($bar)) $bar = $this->bar;
// a tady je ona finta
$this->bar = & $bar;
}
}
$foo1 = new Foo();
$foo1->bar = 'La Trine';
$foo2 = new Foo();
echo $foo2->bar; // vypíše La Trine
Tož tak, no.
Komentáře
tark #1
OT: Kompatibilní s vaší myší … LOL
johno #2
Pekné. Škoda, že si na to došiel až potom ako som prešiel na PHP5.
hvge #3
Zrovna som tento problem riesil. Pekna finta.
hvge #4
#3 hvge, Teda aby som upresnil, chcel som spravit nieco ako singleton v PHP. Je to skor taka onania, ale nakoniec sa to podarilo: #stary-odkaz-http://hvge.sk/scripts/singlet…
David Majda #5
Hezké, všude možně ve svém kódu mám pár míst nadepsaných /* HACK */, kde definuju globální proměnné jedině proto, že v PHP 4.x nejsou statické proměnné tříd. Teď už to nemusím dělat. Díky!
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.