Hallo!
wann sollte man klassen gebrauchen, und wo werden sie am häufigsten eingesetzt ?
Das habe ich mich auch immer gefragt.
Ja, das ist eine gute Frage, und nicht leicht zu beantworten. PHP ist sicher keine wirklich geeignete Sprache um Objektorientierung zu erlernen, da eignene sich Sprachen wie Java oder Smalltalk... erheblich besser. PHP unterstützt nur einen Teil der OOP-Konzepte, wordurch es gerade Anfängern sehr schwer fällt den Sinn in OOP zu sehen.
Das kommt daher, dass OOP vor allem in komplexen Projekten Sinn macht. Meistens sind PHP-Projekte aber rech überschaubar, dass es da IMHO wenig Sinn macht OOP anzuwenden. Da aber Beispiele und Tutorials immer recht einfach gehalten sind, vesteht man vielleichtz wie es funktioniert, aber nicht so richtig was man jetzt davon hat, es geht doch auch einfacher...
Um in PHP wirklich vernünftig objektorientiert zu programmieren braucht man viel Disziplin, da man im Gegensatz zu besseren OOP Sprachen sich über viele Regeln der OOP einfach hinwegsetzen kann, und einen in diesem Moment einfacheren Weg geht, wie z.B. direkt auf Eigenschaften der Objekte zugreifen. Sowas kommt einem im Moment viel einfacher vor, aber wenn das ganze dann viel komplexer wird, mehrere Leute dran arbeiten, viel Zeit vergeht, Klassen verändert werden... dann ist das auf einmal gar nicht mehr so angenehmen wenn man immer 100 Scripte im Hinterkopf haben muss wenn man an einer Klasse arbeiten, da diese auf einmal nicht mehr funktionieren wenn man was an den Eigenschaften ändert.
Der einzige Vorteil bei OOP in PHP 4 liegt eigentlich in der Trennung der Namensräume für Funktionen.
Das ist nicht der einzige Vorteil. Wenn man sich wirklich an OOP hält, dann hat man erheblich mehr Vorteile. Aber das OOP-Konzept ist erlernt man nicht mal eben mit 1-2 PHP-Tutorials. Zumindest ich nicht.
Hier sind mal ein paar Artikel, die ich zum Thema ganz informativ finde:
http://www.php-mag.net/itr/online_artikel/show.php3?id=284&p=0&nodeid=114
http://www.phpbuilder.com/columns/luis20000420.php3
http://java.sun.com/docs/books/tutorial/java/concepts/
Da man aber nur Eineltern-Vererbung einsetzen kann, und es bisher keine privaten Methoden der Klasse / des Objektes gab, ist der Vorteil, nicht so riesig.
Wieso? Wenn Du diszipliniert bist und private Methoden z.B. mit einem Unterstrich am Anfang kennzeichnest... das ist sicher alles nicht so schön (mit PHP5 wird alles besser ;-), ändert aber nichts daran dass man mit PHP durchaus sinnvoll objekt-orientiert programmieren kann.
Man sollte bei der Betrachtung nicht aus den Augen verlieren, dass das gesamte Scriptkonzept der Client-Server-Architekur schon einen objektorientierten Ansatz hat.
Ja, aber bei OOP geht es um einen objekt-orientierten Programmieransatz, das heißt es geht darum in der Programmierung Klassen und Objekte zu verwenden, und das ist bei komplexen Anwendungen sehr sinnvoll.
Viele unterschiedliche Module (Scripte) teilen sich Ressourcen, und können über Sessions und/oder über ein nahezu unbegrenzt großes Environment (GET, POST) miteinander kommunizieren.
Und genau da liegt das Problem wenn es komplexer wird.
Wie die einzelnen Module mit den Daten umgehen, müssen sie selber wissen.
Aber es werden oft viele Daten und Objekte in verschiedenen Scripte verwendet, also sowohl gelesen als auch geschrieben. Wenn Du Klassen/Objekte verwendest wirst Du mehr oder weniger unabhängig von den Scripten an sich, wenn Du was ändern willst änderst Du das innerhalb eines Objektes, und alle Scripte die dieses Objekt verwenden profitieren davon ohne auf der anderen Seite geändert werden zu müssen, da Du ja nur über bestimmte Schnittstellen auf das Objekt zugreifst, die sich dann natürlich nicht ändern dürfen.
Darüber hinaus fällt es viel einfacher ein komplexes OOP Programm zu verstehen, als ein prozedural programmiertes Programm, da sich OOP durchaus versucht an die Realität anzulehnen, was sich in den Objekt Bezeichnungen und Methodennamen spiegelt.
Viele Grüße
Andreas