Klaus / Checklor: Request Handling

Beitrag lesen

Nur mal so als herausgegriffenes Beispiel: Eine Klasse "Blog" - was tut die bei dir? Alles im Blog? Oder wieviele Unterklassen werden durch diese Klasse aufgerufen?

Wenn ich ehrlich bin - ja.
z.b. meine Newsletter Klasse, sie macht _alles_ sie erstellt die Tabellen in der Datenbank falls sie noch nicht vorhanden sind, sie hat sämtliche Funktionen wie. Newsletter als Entwurf speichern, ENtwurf ändern, Entwurf löschen, Entwurf verschicken, für den Newsletter eintragen, den Newsletter schreiben und direkt abschicken. Inklusive der Formular fürs "für den Newsletter eintragen", Etnwurfsänderung, Newsletter schreiben - das alles mit BB-Code-Unterstützung usw.. Sie hat 768 Zeilen ohne groß Abstände gemacht zu haben. Sie verarbeitet, holt, gibt aus und prüft. Ich dachte mir halt so wäre es das beste da ich wenn ich ein Projekt habe einfach nur die Datei inkluden muss und mir alles zur Verfügung steht.

Das ist alles andere als OOP. Wozu brauchst du Klassen? Als Namespace-Separator vielleicht, aber das war es dann auch.

In erster Linie dachte ich mir halt um eine Art "Moduldatenbank" zu haben.
Ich brauche was? Gut - ich kopiere mir einfach nur die eine Datei mit der einen Klasse aus meiner "Klassenbibliothek" und kann alles tun was ich brauche. Es ging mir halt um Wiederverwertbarkeit ohne das ich den ganzen prozedualen Code aus alten Projekten herraussuchen muss und ein wenig abändern muss.

Das Problem ist, dass du die Klasse instanziierst, damit der Konstruktor aufgerufen wird, danach aber nur statische Methoden benutzt. Entscheide dich mal: Entweder eine Klasse wird als Objekt instanziiert, dann sind ihre Methoden nicht statisch, und es macht in der Logik der Applikation auch Sinn, dass es von einundderselben Klasse mehr als ein Objekt parallel im gleichen Skriptkontext gibt. Beispiel dafür wäre beispielsweise ein Array von "Kommentarobjekten" in einem "Blogeintragobjekt".

Du hast Recht, war grad auch dumm das im Beispiel zu machen, meine Klassen halten sich eigendlich an diese Regeln bis auf 1 oder 2...

Alternativ ist eine Klasse durchgehend statisch.

Das habe ich nur bei ein Datenbankklasse udn Utlilityklasse gemacht weil ich mir denke - die brauchste echt _überall_ die kannste auch statisch machen. Ist das nicht okay?
Alternativ gab sich mir auch noch das Singleton-Pattern aber ich fand die statische Methode sinnvoller.

Und für die Realisierung des Request-Handlings bist du ja selbst verantwortlich. dedlfix hat dazu ja auch einen Kommentar abgegeben, der genau in die richtige Richtung zielt. Mache dich mit dem MVC-Pattern vertraut. Nutze ein Framework, das dir zu diesem Zweck die meiste Nerv-Arbeit abnehmen kann. MVC zu realisieren ist eine recht langweilige Standardaufgabe, die viel Zeit schluckt, wenn man sie selbst realisieren will, ohne nennenswerte Vorteile gegenüber bestehenden Frameworks zu bieten.

Ich habe mit Frameworks absolute Probleme. Von der Einstellung her.
Ich ich denke mir halt. Wenn ich mit Frameworks arbeite, geht mir der Lerneffekt absolut flöten. Ich _hasse_ es, fremde Zeilen zu benutzen. Es war halt immer so das ich dadurch das ich mir neue Ziele gesetzt habe - gelernt habe. Mir fehlt dann einfach die Motivation das zu ganze zu machen.
Ich mach z.Z. halt noch mein Abi, viel Sport, hab ne Freundin, geh am Wochenende gerne feiern usw. und da ich schnell anderes zu tun habe als mich vor den PC zu setzen und konzentriert Zeit mit mir, PHP und meinen Projekten die ich mir als Ziel setze zu machen. Zuvieles lenkt mich halt schnell mal ab. Seit ich 12 bin bzw von 12-17,5 Jahren habe
ich xhtml, css, php gelernt nur halt dummerweise die ganzen Jahre über prozedual. OOP erst seit nem halben Jahr etwa.

Klingt jetzt wie ne halbe Lebengeschichte aber da ich auch keinen einzigen habe mit dem ich mich über das "hobby" unterhalten kann usw brauch ich halt "schnelle Erfolge" im Sinne von. Kleine Hürde setzen - bezwingen.

Ganz zu Anfang war das zum Beispiel - "ich will das meine Seite in jedem Browser gleich aussieht", danach setzte ich mir dann das Ziel "jetzt soll es trotzdem W3C konform/valide sein. Und jetzt ist es halt erstmal gewesen, "ich möchte jede Sache nur einmal schreiben müssen und danach wiederverwerten können" und jetzt ist es nunmal "OOP gerecht optimieren" oder so ähnlich..
Wenn ich mir jetzt ein Framework schnappe ist meine Motivation im Keller.
Ich bin nicht mehr stolz darauf das ich dies und das geschafft habe - schließlich hat mir ja jemand anderes schon die Arbeit abgenommen und das Prinzip der ganzen Pattern und MVC usw ist mir dann immernoch nicht zu 100% nachvollziehbar.

Tja, das Problem dürfte insgesamt eher in der Tatsache begründet liegen, dass dein bisheriger Ansatz des Request-Parsings suboptimal ist, und du ohne größere Umbauten aus dieser Falle auch nicht herauskommst. Abgesehen vom ebenfalls suboptimalen Einsatz von OOP.

Das erstere ist ja mein Problem, ist ja auch das Thema hier.

Vllt. sollte ich mich auch nicht schämen soviele Fragen zu stellen denn das hier bin auch ich. Ich wollte halt nicht 20 Fragen hintereinander stellen.

- jetz komm ich mir grad vor wie ein kleiner Junge.