phpbar.de logo

Mailinglisten-Archive

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

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

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Jan 16 15:24:09 CET 2006


Hallo Peter,

Am Montag, 16. Januar 2006 14:44 schrieb Peter Bieling:
> Also, mich hatte überrascht, dass sich Methoden verschiedener Objekte
> ihre static-Variablen teilen.
> Selbst wenn man das Objekt zerstört und ein neues bildet, bleibt diese
> static-Variable erhalten, oder genauer gesagt: feiert Auferstehung.
>
> Offenbar hat das auch einige Kommentatoren des Manuals überrascht, denn
> die haben extra darauf hingewiesen. Da es aber das gleiche Verhalten ist
> wie in C++, nehme ich inzwischen an, dass das so sein soll. (Vielleicht
> weiß jemand, wie es z.B. in Java oder anderen objektorientierten
> Sprachen gelöst ist.)

zunächst ein Link dazu für Java:

http://www.galileocomputing.de/openbook/javainsel4/javainsel_06_003.htm#Rxx365java06003040001CB1F038100

Ansonsten kann ich das gerne für Dich mal mit Java ausprobieren. :-) Aber: 
Mich verwirrt nach wie vor Eure Diskussion. Warum sollte sich in einer Klasse 
eine static-Variable innerhalb einer Funktion anders verhalten, als außerhalb 
einer Funktion?

Bei der Objektorientierten Programmierung steht doch das Objekt im 
Vordergrund, d.h. eine Klasse hat Attribute und Methoden. Hier ist keine Rede 
davon, daß eine Methode Attribute besäße. Klassenattribute gehören zur 
Klasse, niemals zu Methoden. Eine Methode kann ein Attribut verändern. Mehr 
nicht.

Aus meiner Sicht müßte eine static-Variable in einer Klasse ohnehin außerhalb 
der Funktionen deklariert werden. Ich werde mal prüfen, ob das nicht der 
einzige, fehlerfreie Weg in Java ist.

Ich gehe mal davon aus, daß die vermeintliche Dokumentationslücke, die wir da 
gesehen haben, deswegen existiert, weil es da nichts zu erklären gibt. Es 
gibt von der Logik her keine statischen Variablen, deren Geltungsbereich auf 
eine Methode in einer Klasse beschränkt ist. Diese Idee kann eigentlich nur 
zustandekommen, wenn prozedurale Ansätze mit objektorientierten vermischt 
werden bzw. prozedurale Programmierung 1:1 in objektiertorientierte 
übertragen wird. :-)


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive