






|
|
Einschränkungen der objektorientierten Programmierung in PHP
Wir haben ja bereits verschiedentlich angedeutet, das die OOP-Implementierung von PHP ja eigentlich kein richtiges OOP ist, da diverse Konzepte der objektorientierten Programierung anderer Sprachen wie C++ oder Java in PHP nur primitiv oder gar nicht implementiert sind.
Im folgenden möchten wir auf einige dieser fehlenden OOP-Eigenschaften und die Folgen kurz eingehen. - Keine private Variablen und Funktionen, nur public
Bereits ziemlich am Anfang angesprochen: Es gibt keine Möglichkeit innerhalb einer Klasse zu definieren, welche Variablen und Funktionen öffentlich und welche nicht öffentlich sein sollen. Dadurch ist von außen generell immer ein Zugriff möglich, sofern der Name der Variable bzw. Funktion bekannt ist. Dies läßt sich nur in entsprechender Nichtdokumentation von internen Variablen und Funktionen regeln und dies ist oft keinesfalls so sauber. Dies ist eine der größten Schwachstellen der OOP-Implementierung von PHP4 überhaupt !
- Fehlender Destruktor
Wie bereits im Konstruktor-Kapitel angedeutet, fehlt in PHP jeglicher Destruktor. Damit ist ein automatisierter Cleanup beim Entfernen eines Objektes aus dem Speicher nicht möglich. Dies macht sich in der Praxis meistens weniger bemerkbar und zur Not läßt sich dies mit einer normalen Funktionen auch realisieren, wobei man dann auf die Disziplin des Programmierers, der die Funktion anwendet, vertrauen muß und dies ist natürlich immer schlecht.
- Keine Mehrfachvererbung
In anderen objektorientierten Sprachen ist es möglich, eine Klasse nicht nur von einer, sondern von mehreren Klassen gleichzeitig abzuleiten. Die neue Klasse erbt alle Eigenschaften aller Vorfahren. PHP kann dies nicht, in PHP kann man immer nur von einer Klasse ableiten. Hiermit büßt PHP zwar etwas an Flexibilität gegenüber anderen Sprachen ein, auf der anderen Seite sind die Programmierer so gezwungen, hierarchischer zu arbeiten und besser zu konzipieren. Für Einsteiger werden komplexe Bibliotheken wie die Portalsuite Objects dadurch z.B. auch transparenter. Dem Profi fehlt allerdings ein weiteres mächtiges Werkzeug zur Erschaffung komplexer und logischer Objektwelten.
- Keine Überladungen
Einige Sprachen, wie z.B. C++, lassen es zu, den gleichen Funktionsnamen mehrfach zu verwenden, wenn sich die Parameterlisten ausreichend unterscheiden. Diese Mehrfachverwendung wird als Überladen (engl. Overloading) bezeichnet. Dies ist oft sehr angenehm, da man aussagekräftige Funktionsnamen nicht mehr mit Typnamen und Parametern ergänzen und „verunstalten“ muß. In PHP sind Überladungen derzeit nicht möglich. In der Praxis kann man dies natürlich ausbügeln durch Fallunterscheidungen usw. Dadurch wird der Code evt. natürlich komplexer und unübersichtlicher.
Derzeit wird in der PHP-Community in öffentlichen Foren und Mailinglisten diskutiert, ob und wie diese fehlenden objektorientierten Eigenschaften in der Version 5 von PHP integriert werden sollen. Von der Firma „Zend“, von der die PHP-interne Engine stammt, gibt es zur Version 2 der Zend PHP-Engine eine Diskussionsgrundlage bzgl. der Implementierung. Ob, was und wie es jedoch letztendlich implementiert werden wird, steht derzeit noch nicht fest.
[zurück] -
[bookmarken] -
[Druckversion] - [Weiterempfehlen] - [Kontakt] - [Impressum]
Copyright © 2000-2012 by Portunity GmbH - Alle Rechte vorbehalten.
Diese Seite wird mit der Portunity Portalsuite Enterprise-Edition betrieben.
|
|


Providing unter:
http://portunity.net
|

| DSL, ENUM, Hosting, Server,...
|

|