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
Sam Jan 14 17:35:15 CET 2006


Hi Peter,

Am Samstag, 14. Januar 2006 16:16 schrieb Peter Bieling:
> Hallo Lutz,
>
> Lutz Zetzsche wrote:
> > Wir haben hier also ein Beispiel, wo ein Blick in das Handbuch wohl nicht
> > unbedingt die ultimative Lösung ist. Eine kleine Dokumentationslücke zu
> > einem "Bug" der zum Feature wurde. ;-) Wobei ich allerdings nicht
> > verstehe, warum es ursprünglich als ein Bug betrachtet wurde. Es ist
> > schließlich eine Definitionsfrage. Ein Bug kann eigentlich nur vorliegen,
> > wenn sich etwas anders verhält als definiert. Aber da im Handbuch keine
> > Definition zu finden ist, wie static sich in Klassen zu verhalten hat...
>
> Ein Bug kann auch vorliegen, wenn ein allgemein anerkanntes Prinzip, auf
> das man sich beruft, nicht korrekt umgesetzt wird. Die PHP-Entwickler
> können ja nun nicht das Konzept der objektorientierten Programmierung
> nach Gutdünken umsetzen.

nein, aber Objektorientierung wird von den verschiedenen Sprachen teilweise 
unterschiedlich umgesetzt. Ein Beispiel: Dar eine Klasse nur eine Klasse oder 
mehrere Klassen erweitern? Es gibt Sprachen, die ermöglichen letzteres, Java 
tut es z.B. aber nicht.


> Wenn ich Objekte habe, arbeite ich mit Methoden und nicht mit
> Funktionen. Rein technisch mag das das selbe sein, aber mit der
> objektorientierten Programmierweise verfolgt man ja unter anderem den
> Zweck, die Eigenschaften zusammengehörender Daten nach außen hin
> abzuschotten, um sie gegen versehentliches Ändern zu schützen.
>
> Die jetzige, fehlerhafte, Implementierung von static erlaubt dagegen,
> dass zwei völlig unabhängige Objekte sich unter bestimmten Bedingungen
> die Daten überschreiben, womit genau das Gegenteil von dem entsteht, was
> durch die Kapselung der Daten in Objekten erreicht werden soll. Das kann
> also niemals richtig sein, egal, was im Handbuch steht.

Du hast es so gewollt. ;-) Ich habe jetzt mal genauer nachgelesen. Ich bin 
nämlich immer über dieses "static" gestolpert. Irgendwas kam mir hier bei 
Eurer Diskussion merkwürdig vor...

"static" bedeutet "statisch", und statische Variablen nennt man in der 
Objektorientierung auch KLASSENvariablen, weil sie eben nicht an eine 
Objektinstanz, sondern an eine KLASSE gebunden sind! Will heißen: Die 
"static"-Implementierung in PHP auf Klassen bezogen ist - folgt man Deiner 
Eingangsargumentation - eben gerade nicht fehlerhaft, sondern eine analoge 
Umsetzung eines allgemein anerkannten Prinzips!


> Fazit: Es bleibt also zur Zeit keine andere Möglichkeit, also auf static
> in PHP-Klassen zu verzichten, wenn man sauber programmieren will.

Also "static" verhält sich nicht so, wie Du es halt erwartet hast. Aber was 
spricht dagegen, einen Array zu nehmen und für jedes Objekt ein Element zu 
nehmen. :-) Den Schlüssel kannst Du ja in Form einer Objekt-ID benutzen.


> > Etwas philosophisch - es ist halt Freitag... ;-)
>
> auch Sonntag ist ein guter Tag zum philosophieren. :-)
> Viele Grüße und noch einen schönen Restsonntag

Es ist Samstag! ;-) Also noch ein Tag mehr zum Entspannen und 
Philosophieren. :-)))


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive