phpbar.de logo

Mailinglisten-Archive

[php] static in Methoden (PHP4) - Ist das so gedacht?

[php] static in Methoden (PHP4) - Ist das so gedacht?

Peter Bieling network at media-palette.de
Mon Jan 16 15:44:52 CET 2006


Hallo Matthias,

Matthias Stierli wrote:

>>Also, mich hatte überrascht, dass sich Methoden verschiedener Objekte
>>ihre static-Variablen teilen. 
> 
> Da hier von "Methoden" die Rede war, überrascht mich das auch. Obwohl für
> mich eine static-Variable in einer Methode sowieso keinen Sinn macht.

Also, d.h. nur die Methoden mit dem gleichen Namen. Siehe dieses Beispiel:

=======
<?php
class test_static
{
   var $res;
   function test_static ($number) {
       static $result=0;
       $result += $number;
       $this->res= $result;
   }
   function other_static($number) {
       static $result=0;
       $result += $number;
       $this->res= $result;
   }
}

$a = new test_static (7);
$a->test_static(3);
echo $a->res;
//Ergebnis 10
echo "<br>";
$b = new test_static (0);
$b->other_static (3);
echo $b->res;
//Ergebnis 3
?>
======

static $result aus test_static ist etwas anderes als static $result aus 
other_static! Das kann schon sinnvoll sein, wenn man z.B. mehrere 
$counter hat.

> Mich überrascht aber, dass du es seltsam findest, dass eine Eigenschaft
> einer Klasse ihren Wert klassenübergreifend hat. Denn das ist meiner
> Ansicht nach genau der Sinn von static bei OOP.

In PHP4 kannst Du übrigens gar keine static var definieren. (In PHP 5 
habe ich das Verhalten noch nicht getestet.)

Viele Grüße

Peter



php::bar PHP Wiki   -   Listenarchive