Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Translate to English… Ins Deutsche übersetzen…

Bezva finta na statické proměnné v PHP 4

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.

napsáno 24. 9. 2004 | shlédnuto 6937x | nahoru


Komentáře RSS 2.0 komentářů » přidat

#1 tark http://kanevinternetu.blacksuns.net/fotoblog.php nový

OT: Kompatibilní s vaší myší … LOL

Posláno 25. 9. 2004 v 10.35 | Odpovědět
avatar

#2 johno http://johno.jsmf.net/ nový

Pekné. Škoda, že si na to došiel až potom ako som prešiel na PHP5.

Posláno 25. 9. 2004 v 10.54 | Odpovědět

#3 hvge http://hvge.sk nový

Zrovna som tento problem riesil. Pekna finta.

Posláno 26. 9. 2004 v 10.29 | Odpovědět
Na komentář reagoval [4] hvge

#4 hvge http://hvge.sk nový

#3 hvge: Teda aby som upresnil, chcel som spravit nieco ako singleton v PHP. Je to skor taka onania, ale nakoniec sa to podarilo: http://hvge.sk/scripts/singlet…

Posláno 26. 9. 2004 v 15.48 | Odpovědět
avatar

#5 David Majda http://www.majda.cz nový

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!

Posláno 26. 9. 2004 v 16.55 | Odpovědět

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.

Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

phpFashion © 2004, 2012 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.