Na navigaci | Klávesové zkratky

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.

Komentáře

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

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

    před 12 lety
  2. johno http://johno.jsmf.net/ #2

    avatar

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

    před 12 lety
  3. hvge http://hvge.sk #3

    Zrovna som tento problem riesil. Pekna finta.

    před 12 lety | reagoval [4] hvge
  4. hvge http://hvge.sk #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: http://hvge.sk/scripts/singlet…

    před 12 lety
  5. David Majda http://www.majda.cz #5

    avatar

    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!

    před 12 lety

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