2009-10-26 17 views
5

Ich mache einen einfachen Blog und ich möchte eine Klasse dafür verwenden. Ich frage mich, wie der beste Weg dazu aussehen könnte. Bisher gibt es 3 Methoden, die ich sehen kann. Ich habe eine Klasse gemacht, die Links, Beiträge und Kommentare enthält. Das Problem bei der Rückgabe all dieser Daten in einem einzigen Array bestand darin, dass die Daten, die nur ein einziges Mal hätten wiedergegeben werden sollen, so oft wiederholt wurden wie die Zeilen, die ich zurückgab. Manche Leute würden sagen, dass dies korrekt war und dass ich alles in einem einzigen Array haben sollte. Ich bin immer noch nicht überzeugt, dass dies der richtige Weg ist.Entwerfen einer PHP-Klasse. Der richtige Weg

Ich würde wirklich einige Eingabe schätzen, wie einige von euch eine Klasse entwerfen könnten, um diese 3 Dinge zu behandeln. Das einzige, was ich bis jetzt für die Klasse brauche, ist ein Link zur Datenbank. Welche anderen Mitglieder ich verwenden sollte, ist mir unklar. Auch hier möchte ich eine Perspektive gewinnen, wie es gemacht werden sollte.

Danke, John


OK, also wenn ich hatte drei Methoden wie diese sagen:

var $db; 

function GetPosts() { 
//posts 
} 

function GetComments() { 
// blog comments 
} 

function GetLinks() { 
// links for the blog 
} 

Was könnte einige Mitglieder euch wäre zu benutzen?

Auch ich frage mich, ob ich eine Methode haben sollte, die andere Methoden aufruft. Nur eine öffentliche Methode und dann machen Sie alle diese anderen Methoden privat. Die öffentliche Methode würde die privaten Methoden aufrufen und ihre Werte zurückgeben. Ist das ratsam?

+0

Mit den Tonnen von kostenlosen Open-Source-Blogging-Plattformen wollen Sie sich bemühen, Ihre eigenen zu tun? Welche besonderen Eigenschaften schlagen Sie vor? – jldupont

+3

Eigentlich nichts anderes als nur Blogposts und Kommentare. Ich genieße einfach den Programmieraspekt ist alles. :) – JohnB

+2

Ich würde annehmen, dass sein Zweck ist, über PHP und Design mehr zu lernen, als Blogging-Software zu machen, die von anderen verwendet wird. – marr75

Antwort

0

CakePHP hat eine tutorial on creating a blog mit dem weit verbreiteten CakePHP-Framework. Wenn Sie daran interessiert sind, während der Programmierung Ihres Blogs ein neues Framework zu erlernen, würde ich Ihnen empfehlen, dies zu tun.

Wenn Sie alles manuell codieren möchten, würde ich vorschlagen, dass Sie Klassen für das Laden und Speichern (Persistieren) Ihrer Entitäten (Links, Kommentare) erstellen oder ein Persistenz-Framework verwenden (z. B. Doctrine ORM for PHP).

Das Problem ist jedoch, dass Sie die Funktionalität, die Sie beschrieben haben, auf verschiedene Arten implementieren können; Es gibt keine universelle Antwort. Wenn Sie einen Code einreichen, ist es einfacher, spezifische Ratschläge zu geben.

+0

Hallo Gergely Orosz, danke für die Antwort. Ich habe schon ein paar verschiedene Frameworks ausprobiert, aber sie interessieren mich nicht besonders. Für mich macht es sowieso Spaß, es selbst zu machen. Ich weiß, dass es viele Hilfsfunktionen gibt, aber ich habe andere "Programmierer" getroffen, die keine Ahnung haben, was hinter diesem Framework vor sich geht. Versteh mich nicht falsch, ich mag Frameworks, aber ich mag die Interaktionen ein wenig mehr. Ich werde meiner Klasse oben ein paar Dinge hinzufügen und vielleicht können Sie mir ein paar Hinweise geben. Danke noch einmal! – JohnB

1

Wenn Sie es von Grund auf selbst schreiben möchten, würde ich damit beginnen, für jeden Teil des Blogs separate Objekte zu erstellen, also ein Post-Objekt, ein Kommentar-Objekt, ein Link-Objekt.

Dann könnten Sie darüber nachdenken, wie diese Objekte miteinander interagieren (zum Beispiel kann ein Post-Objekt ein Array von Kommentar-Objekten enthalten) und wie sie mit der grundlegenden CRUD umgehen (create, read (get), update, löschen).

+0

Hallo GSto, danke für die Antwort. Ich stimme dir zu, eine separate Klasse für jeden Teil des Blogs zu haben. Ich habe gehört, dass es so schwierig ist, die Abstraktion intakt zu halten. Ich bin mir aber immer noch nicht sicher. Ich füge ein paar Dinge zu den obigen Methoden hinzu und vielleicht kannst du mich wissen lassen, was du tun würdest, um es zu ändern. – JohnB

+0

wie würde es die Abstraktion verletzen, wenn man es so macht? Ich glaube, dass es einfacher wäre, auf diese Weise zu bestehen, anstatt eine Blogklasse zu haben, die alles handhabt. – GSto

0

Ich kenne nicht die Details der Aufgabe, die Sie erreichen möchten, aber denken Sie an einen Factory-Klasse-Blog, der zum Beispiel die Methode GetPostManager() hat. PostManager kann Beiträge erstellen, bearbeiten, aktualisieren und auch auswählen. So gibt $ Blog-> GetPostManager() -> GetPosts ($ datefrom, $ datumo) die PostCollection-Klasse zurück, die Countable- und Iterator-Schnittstellen implementiert, um nach Posts zu suchen. PostCollection ist ein Array mit der PostItem-Klasse. Die PostItem-Klasse ist eine einfache Klasse, die der Datenbank ihre Eigenschaften zuordnen kann.

+0

Danke FractalizeR. Das Fabrikmuster klingt gut. Würdest du sagen, dass es falsch wäre, eine Klasse mit diesen 3 Methoden zu erstellen? Ich weiß, dass es mehr als 100 Möglichkeiten gibt, Dinge zu tun, aber ich denke, ich suche nach dem "besten" Weg. Nicht unbedingt der einfachste. Ich denke, dass es letztendlich skalierbar sein sollte, wenn ich das jemals machen wollte. – JohnB

+0

Nein, Klasse mit drei Methoden ist gut ... Aber bis Sie Ihr System erweitern. Sollte ich weitere Funktionen hinzufügen wollen, wird Ihre eine Klasse schnell von immer mehr Methoden überfüllt werden. Also, ich denke, es ist besser, am Anfang etwas Struktur zu schaffen. Vor allem, wenn es nicht sehr komplex ist. –

Verwandte Themen