Mailinglisten-Archive |
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