Klassen lernen ?!? URL ?
Frank
- php
Guten Morgen @all
wollte mich mal mit klassen beschäftigen.
Kennt jemand zufällig ne gute seite , wo es super leicht und gut erklärt wird ??
Hab mich schon in google abgesucht, aber leider nix sinnvolles gefunden.
Wäre nett, wenn mir jemand helfen könnte.
mfg
Frank
Hello,
ganz so viel gibt es über OOP in PHP nicht
Aber mir hat der Abschnitt in http://tut.php-q.net/index.html geholfen. Allerdings kannt ich ja OOP schon aus Assemblerzeiten (damals hat man es nur noch nicht so genannt) und dann unter C/C++.
Und das Kapitel 13 aus dem PHP-Maual http://de2.php.net/manual/de/print/language.oop.php solltest Du Dir inclusive der User Notes auch anschauen. Aber das ist etwas verwirrend geschrieben, fang besser mit dem Tut von Quake an.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Frank,
Kennt jemand zufällig ne gute seite , wo es super leicht und gut erklärt wird ??
Vielleicht hilft Dir http://tut.php-q.net/klassen.html weiter.
Viele Grüße,
Christian
Hallo,
Wäre nett, wenn mir jemand helfen könnte.
Tja, für welche PHP Version denn?
PHP 4
http://at2.php.net/oop
http://www.zend.com/zend/tut/class-intro.php
http://www.sitepoint.com/article/662/1
PHP 5
http://www.sitepoint.com/article/1192/1
http://www.php.net/zend-engine-2.php
So, das sind alle URL's die mir zur Zeit einfallen...
gruß,
Severin
also, erstmal vielen dank an alle.
werd wohl mit dem von quake anfangen, sieht einfacher aus.
jetzt hätte ich nur noch ne winzig kleine frage.
wann sollte man klassen gebrauchen, und wo werden sie am häufigsten eingesetzt ?
mfg
Frank
Hello,
jetzt hätte ich nur noch ne winzig kleine frage.
wann sollte man klassen gebrauchen, und wo werden sie am häufigsten eingesetzt ?
Das habe ich mich auch immer gefragt. Der einzige Vorteil bei OOP in PHP 4 liegt eigentlich in der Trennung der Namensräume für Funktionen. 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. Vernünftig aufgebaute Librairies mit einer strammen Nomenklatur lesiten das auch und habn zudem den Vorteil, dass man nicht aus Versehen eine Funktion redefinen kann. Allerdings habe ich mir die Änderungen in PHP 5 bezüglich der Klassen kurz angeschaut. das scheint interessant zu werden.
Man sollte bei der Betrachtung nicht aus den Augen verlieren, dass das gesamte Scriptkonzept der Client-Server-Architekur schon einen objektorientierten Ansatz hat. 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.
Wie die einzelnen Module mit den Daten umgehen, müssen sie selber wissen.
Liebe Grüße aus http://www.braunschweig.de
Tom
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
Hello Andreas,
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.
Das kann ich aber in der imperativen Programmierung auch, wenn ich die Daten nicht einzeln übergebe sondern in geblockten Strukturen. Das stammt schon aus der Assemblerzeit. Da hat man nur den Zeiger auf den Datenblock und dessen Größe übergeben und das Objekt (die Subroutine) musste sich die Daten dort rausholen. Man konnte dem Datenblock ständig Werte hinzufügen, die von der neueren Subroutige dann auch berücksichtigt wurden. Auch eine ältere kam dann mit neuen Daten zurecht, hat natürlich nur den ihr bekannten Teil verwertet.
Und bei den Funktionen funktionierte das genauso. Wenn die Funktion vorhanden war, hat sie in einem Register einen Kontrollwert zurückgegeben und wenn sie nicht vorhanden war, eben nicht. Dann wußte man, dass man den Datenblock nicht auswerten durfte. Die ganze DOS-API und der Network-Extender sind so aufgebaut. Selbstverständlich konnte man Standardprozeduren auch überschreiben. Jeder Treiber arbeitet so, dass er den INT einfach ersetzt.
Bei PHP kann man diese Konezpt deshalb so schön nutzen, da es sowohl "Arrays" als Value oder als Reference übernehmen kann, als auch "Arrays" als Funktionsrückgabewert haben kann.
Sich dafür einen sauberen Stil anzugewöhnen ist aber sicher genauso Komplex, wie die "echte" OOP ;-))
Liebe Grüße aus http://www.braunschweig.de
Tom