Hallo Leute,
ich wollte mal ein wenig Diskutieren/Philosophieren über OOP in PHP.
Ich habe ja ein Projekt wo ich alles nur mit Funktionen umsetze damit ich halt Beispiele einem Anfänger zeigen kann. Dabei ist mir aufgefallen dass ich im Grunde alles machen kann, was ich sonst mit OOP auch mache ausgenommen sind nur
* Typehints
* Setter Getter
* Autoloading
* Exceptions
Die Syntax ist halt etwas anders. Die Fragen die ich mir jetzt stelle ist, sind meine Projekte zu banal dass ich keine besonderen OOP Funktionen benötige? Oder ist OOP eigentlich nur ein Syntax Sugar für schnellere Lesbarkeit?
Ich habe mir mal die Wiki Seite angeschaut um heraus zu finden was OOP wirklich ausmacht, im vergleich zu Funktionen und konnte jetzt nichts konkretes finden.
Laut der Defintion auf der Seite https://de.wikipedia.org/wiki/Objekt...Programmierung stehen folgende Punkte:
1. Everything is an object
Das trifft ja in PHP auch nicht zu, wir nutzen kein String object wie es zb in C# der Fall ist.
2. Objects communicate by sending and receiving messages (in terms of objects)
Trifft in PHP auch nicht zu, nicht jeder hat ein Messaging Objekt, meistens returned man null/true/false/error message oder ruft ne Methode vom Objekt auf. Ausnahmen sind Exceptions. Aber Exceptions ist halt nur ein Art wie objekte Kommunizieren.
3. Objects have their own memory (in terms of objects)
Haben Funktionen auch, ich kann innerhalb einer Funktion eine Variable definieren oder sogar anonyme Funktion und dann in PHP ähnliches machen wie es JavaScript macht.
4. Every object is an instance of a class (which must be an object)
Ja nun, javascript Objekte sind ja auch nur Closures die intern anonyme Funktionen haben
5. The class holds the shared behavior for its instances (in the form of objects in a program list)
Keine Ahnung wie ich das Interpretieren soll
6. To eval a program list, control is passed to the first object and the remainder is treated as its message
Verstehe ich auch nicht.
Danach gab es ja Anpassung zu der Defintion
“OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.”
ja wunderbar, innerhalb von Funktionen kann ich prozesse Definieren in Form von Closures und messages kann ich auch nutzen indem ich Funktionen in Funktionen aufrufe und via Static die Variablen in der Funktion befülle. Late Binding mach ich mit call_user_func ich kann durchaus ein String für eine Funktion zusammensetzen und diese dann je nach dem aufrufen. (Vorausgesetzt ich habe es korrekt verstanden https://de.wikipedia.org/wiki/Polymo...Programmierung) )
Also letztendlich sieht für mich es so aus als ob OOP einfach nur Syntax Sugar ist und kann durchaus alles in Funktionen umsetzen.
was sagt ihr? Was macht jetzt OOP wirklich aus außer Syntax? Lesbarkeit? Wiederverwendung?
Ich will nur ein vernüftigen Weg finden wie ich mit hilfe von Funktionen einen Anfänger an OOP heranführe und es nicht so Stumpf wie in der Schule angehe. Meine Idee ist, ich definieren Funktionen um ein Problem zu beheben und dann kann ich dann auf die Funktion eingehen und sagen "In OOP machst du das so und so". Nur kann es ja sein dass ich irgendwas überhaupt nicht bedacht habe, dass OOP doch nicht so leicht mit Funktionen umsetzbar wäre.
Bin auf eure Antworten gespannt
ich wollte mal ein wenig Diskutieren/Philosophieren über OOP in PHP.
Ich habe ja ein Projekt wo ich alles nur mit Funktionen umsetze damit ich halt Beispiele einem Anfänger zeigen kann. Dabei ist mir aufgefallen dass ich im Grunde alles machen kann, was ich sonst mit OOP auch mache ausgenommen sind nur
* Typehints
* Setter Getter
* Autoloading
* Exceptions
Die Syntax ist halt etwas anders. Die Fragen die ich mir jetzt stelle ist, sind meine Projekte zu banal dass ich keine besonderen OOP Funktionen benötige? Oder ist OOP eigentlich nur ein Syntax Sugar für schnellere Lesbarkeit?
Ich habe mir mal die Wiki Seite angeschaut um heraus zu finden was OOP wirklich ausmacht, im vergleich zu Funktionen und konnte jetzt nichts konkretes finden.
Laut der Defintion auf der Seite https://de.wikipedia.org/wiki/Objekt...Programmierung stehen folgende Punkte:
1. Everything is an object
Das trifft ja in PHP auch nicht zu, wir nutzen kein String object wie es zb in C# der Fall ist.
2. Objects communicate by sending and receiving messages (in terms of objects)
Trifft in PHP auch nicht zu, nicht jeder hat ein Messaging Objekt, meistens returned man null/true/false/error message oder ruft ne Methode vom Objekt auf. Ausnahmen sind Exceptions. Aber Exceptions ist halt nur ein Art wie objekte Kommunizieren.
3. Objects have their own memory (in terms of objects)
Haben Funktionen auch, ich kann innerhalb einer Funktion eine Variable definieren oder sogar anonyme Funktion und dann in PHP ähnliches machen wie es JavaScript macht.
4. Every object is an instance of a class (which must be an object)
Ja nun, javascript Objekte sind ja auch nur Closures die intern anonyme Funktionen haben
5. The class holds the shared behavior for its instances (in the form of objects in a program list)
Keine Ahnung wie ich das Interpretieren soll
6. To eval a program list, control is passed to the first object and the remainder is treated as its message
Verstehe ich auch nicht.
Danach gab es ja Anpassung zu der Defintion
“OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.”
ja wunderbar, innerhalb von Funktionen kann ich prozesse Definieren in Form von Closures und messages kann ich auch nutzen indem ich Funktionen in Funktionen aufrufe und via Static die Variablen in der Funktion befülle. Late Binding mach ich mit call_user_func ich kann durchaus ein String für eine Funktion zusammensetzen und diese dann je nach dem aufrufen. (Vorausgesetzt ich habe es korrekt verstanden https://de.wikipedia.org/wiki/Polymo...Programmierung) )
Also letztendlich sieht für mich es so aus als ob OOP einfach nur Syntax Sugar ist und kann durchaus alles in Funktionen umsetzen.
was sagt ihr? Was macht jetzt OOP wirklich aus außer Syntax? Lesbarkeit? Wiederverwendung?
Ich will nur ein vernüftigen Weg finden wie ich mit hilfe von Funktionen einen Anfänger an OOP heranführe und es nicht so Stumpf wie in der Schule angehe. Meine Idee ist, ich definieren Funktionen um ein Problem zu beheben und dann kann ich dann auf die Funktion eingehen und sagen "In OOP machst du das so und so". Nur kann es ja sein dass ich irgendwas überhaupt nicht bedacht habe, dass OOP doch nicht so leicht mit Funktionen umsetzbar wäre.
Bin auf eure Antworten gespannt
Kommentar