Na navigaci | Klávesové zkratky

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 #1

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

    před 20 lety
  2. johno #2

    avatar

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

    před 20 lety
  3. hvge #3

    Zrovna som tento problem riesil. Pekna finta.

    před 20 lety | reagoval [4] hvge
  4. 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…

    před 20 lety
  5. David Majda #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 20 lety

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


phpFashion © 2004, 2024 David Grudl | o blogu

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