Sep 17
OOP (Objekt orientierte Programmierung) PHP
Seit PHP4 ist es möglich PHP OO zu programmieren. Mit PHP5 wurde das stark ausgebaut, aber bisher habe ich noch kein OS (Open Source) Projekt gesehn, in dem das wirklich verwendet wird, dabei ist das doch nun schon älter… PHP geht schon in Richtung PHP6…
Ich habe mich sofort für OOP begeistern können, als ich es kennenlernte, auch wenn mir das nicht leichter fällt als prozedural (das ist der andere PHP Stil den quasi alle praktizieren) zu programmieren.
Yeah, PHP OOP ist supertoll, das muss ich ab jetzt umbedingt immer verwenden!
→ Nein! Man muss eindeutig abwiegen, ob man etwas OO programmiert, den bei PHP geht dabei Performance verloren, denn das kompliieren dauert länger.
Zum Preis von einem bischen Performance bekommt man dafür:
- Übersichtlichkeit / Lesbarkeit
- Darstellung von abstrakten und realen Dingen
- Erweiterbarkeit
- Wiederverwendbarkeit
- Kapselung
- und somit Effizienz
Und diese Liste ist noch lang nicht vollständig.
Das hat mich letztlich überzeugt. Ich bin dabei das Herzstück („Phlame Engine“) für UGamela in OOP zu schreiben. Dabei werde ich zum Beispiel Planeten und Flotten in Models abbilden. Das Ergebnis gibt den Moddern, die hoffentlich angespornt sind und viele Ideen haben, einfache Möglichkeiten mit den Daten umzugehen, wahrscheinlich ohne selbst Ahnung von MySQL oder Sessions zu haben.
Ihr könnt ich somit schon auf die PHP OOP Pfeilchen „->“ freuen xD
September 17th, 2008 at 18:51
Jaja! Ich mache gerade auch sehr viele Pfeilchen! ($blog->range(1);)
xD
September 17th, 2008 at 21:29
Ich hab mir das auch mal angeschaut und fand das persönlich total unübersichtlich und extrem komplex. Außerdem ist sowas doch auch sehr Buganfällig, oder versteh ich das alle blos falsch/garnicht??
September 18th, 2008 at 17:56
Hm klar ist es schwieriger, da man, wenn man es richtig macht, für seine Nachfolger programmiert, ansonsten ist es vor allem zuerst gewöhnungsbedürftig, besonders wenn man vorher prozedural programmiert hat.
In Sachen Bugs ist würde ich sagen ist der OO Stil dem prozeduralen voraus, wegen der Kapselung. Zudem führt bessere Übersicht auch zu weniger Bugs, man behält einfach den Überblick. Bugs sind dann auch schneller behoben!
September 18th, 2008 at 22:53
>Ich hab mir das auch mal angeschaut und fand das persönlich total unübersichtlich und extrem komplex.
wie Phlegma schon geschrieben hat ist das gewöhnungssache. aber sollte man es richtig machen spart man später sehr viel zeit. weiterhin ist es nur so buganfällig wie der programmierer 😉 ein saubere, richtig eingesetzte oop hilft vieles zu vermeiden. wenn du willst such ich dir ein paar beispiele raus
September 19th, 2008 at 18:41
KK Chef 🙂
Dezember 5th, 2008 at 12:20
> Übersichtlichkeit / Lesbarkeit
Die Methodenaufrufe allein vielleicht… die Implementierung jedoch nicht.
> Darstellung von abstrakten und realen Dingen
Die tollen Beispiel in den Tutorials sind meistens sehr weltfremd
und haben aktuell nichts mit Webentwicklung im speziellen zu tun.
> Erweiterbarkeit
Prozeduraler Code ist nicht erweiterbar?
> Wiederverwendbarkeit
Soweit die Theorie… in der Praxis sieht das allerdings anders aus.
> Kapselung
Kapselung ist ne feine Sache, nur sieht man strikte Kapselung irgendwie nie.
> und somit Effizienz
Effizienz ist das Verhältnis vom Nutzen zu dem Aufwand.
Ich kann den Nutzen in dem ganzen Aufwand nicht sehen.
Dezember 6th, 2008 at 15:35
Du bist ein Gegner von OOP? Ich möchte nicht mehr davon weg, seit ich das kenne. Prozedurale Programmierung ist einfach nicht für größere Projekte geeignet.
>> Übersichtlichkeit / Lesbarkeit
>Die Methodenaufrufe allein vielleicht… die Implementierung jedoch nicht.
Es geht ja gerade darum, dass man die Implementierung eigentlich gar nicht lesen muss.
>> Darstellung von abstrakten und realen Dingen
>Die tollen Beispiel in den Tutorials sind meistens sehr weltfremd und haben aktuell nichts mit Webentwicklung im speziellen zu tun.
Jup, fürchterlich, wie Design Patterns erklärt werden. Klare Beispiele gibt es nur verdammt selten, aber die Möglichkeiten sind auch sehr zahlreich.
>> Erweiterbarkeit
>Prozeduraler Code ist nicht erweiterbar?
Das habe ich nicht gesagt. Nur würde ich es bei prozeduraler Programmierung niemals zu den positiven Aspekten zählen, da die Erweiterbarkeit doch sehr gering ist.
> Wiederverwendbarkeit
> Kapselung
Erweiterbarkeit und Wiederverwendbarkeit hängen beide an der Kapselung. Wenn diese schlecht ist, dann ist klar warum der Rest auch nicht so gut ist.
>Effizienz
Das kommt darauf an was dein Ziel ist. OOP ist effizient, wenn ein sehr variables, flexibles Projekt aufziehst, an dem viele Leute arbeiten.
Wenn du bloß dein Browsergame schreiben willst, das nichtmal wirklich komplexe Businesslogik hat, dann bist du was Performance (und damit „deine“ Effizienz), Schreibaufwand und Nachdenken wohl besser mit prozeduraler Programmierung bedient.
September 15th, 2009 at 03:27
Keep it simple stupid.