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