2009-10-26 12 views
5

Sto creando un semplice blog e voglio usare una classe per questo. Mi chiedo quale sia il modo migliore per farlo. Ci sono 3 metodi finora che posso vedere. Ho creato una classe che ha collegamenti, post e commenti. Il problema con la restituzione di tutti questi dati in un singolo array era che i dati che avrebbero dovuto essere riprodotti solo una volta ripetevano l'eco tante volte quante erano le righe che stavo restituendo. Alcune persone direbbero che questo era corretto e che dovrei avere tutto in un unico array. Non sono ancora convinto che questa sia la strada giusta da percorrere.Progettazione di una classe PHP. Il modo giusto

Apprezzerei molto l'input su come alcuni di voi ragazzi potrebbero progettare una classe per gestire queste 3 cose. L'unica cosa che so di cui ho bisogno per la classe finora è un collegamento al database. Quali altri membri dovrei usare non sono chiari per me. Ancora una volta, mi piacerebbe ottenere una prospettiva qui su come dovrebbe essere fatto.

Grazie, John


OK, quindi se ho dovuto dire 3 metodi come questo:

var $db; 

function GetPosts() { 
//posts 
} 

function GetComments() { 
// blog comments 
} 

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

Quali potrebbero essere alcuni dei membri voi ragazzi userebbe?

Inoltre, mi chiedo se dovrei avere un metodo che chiama altri metodi. Solo un metodo pubblico e quindi rendere privati ​​tutti questi altri metodi. Il metodo pubblico chiamerebbe i metodi privati ​​e restituirebbe i loro valori. È consigliabile?

+0

Con le tonnellate di piattaforme di blogging open source che vuoi sforzarti di fare da solo? Quali caratteristiche speciali proponi? – jldupont

+3

In realtà nient'altro che solo post di blog e commenti. Mi piace solo l'aspetto della programmazione è tutto. :) – JohnB

+2

Suppongo che il suo scopo sia quello di conoscere php e design più che creare software di blogging che saranno utilizzati da altri. – marr75

risposta

0

CakePHP ha un tutorial on creating a blog utilizzando il framework CakePHP ampiamente adottato. Se sei interessato ad apprendere un nuovo framework durante la programmazione del tuo blog, ti consiglio di farlo.

Se vuoi a portata di mano il codice-tutto però vorrei suggerire che si crea classi per la gestione di caricamento e il salvataggio (persistente) i tuoi entités (link, post commenti) o utilizzare un framework di persistenza (ad esempio Doctrine ORM for PHP).

Il problema è che è possibile implementare la funzionalità descritta in numerosi modi diversi; non c'è una risposta universale. Se si invia un codice, è più facile dare consigli specifici.

+0

Ciao Gergely Orosz, grazie per la risposta. Ho già provato un paio di framework diversi ma non mi interessa molto. Per me, comunque, mi prende il divertimento di farlo da solo. So che ci sono molte funzioni di supporto e tutti, ma ho incontrato altri "programmatori" che non hanno idea di cosa succede dietro quella struttura. Non fraintendermi, mi piacciono le strutture ma mi piacciono di più le interazioni. Aggiungerò alcune cose alla mia classe di cui sopra e forse potresti darmi alcuni suggerimenti. Grazie ancora! – JohnB

1

Se si desidera scriverlo da zero, inizierei creando oggetti separati per ogni parte del blog, ad esempio un oggetto post, un oggetto commenti, un oggetto collegamento.

Quindi si potrebbe pensare a come questi oggetti interagiranno tra loro (ad esempio, un oggetto post può contenere una matrice di oggetti di commento) e come gestiranno il CRUD di base (creare, leggere (ottenere), aggiornare, cancella) operazioni.

+0

Ciao GSto, grazie per la risposta. Sono d'accordo con te sull'avere una classe separata per ogni parte del blog. Ho sentito dire che farlo in questo modo rende più difficile mantenere intatta l'astrazione. Non sono ancora sicuro di questo però. Aggiungerò alcune cose ai metodi sopra riportati e forse potresti farmi sapere cosa vorresti fare per cambiarlo. – JohnB

+0

come fare cosa farebbe in questo modo ferirebbe l'astrazione? Credo che sarebbe più semplice mantenere questo modo, invece di avere una classe di blog che gestisca tutto. – GSto

0

Non conosco i dettagli dell'attività che si desidera raggiungere, ma penso ad un Blog di classe factory, che ad esempio ha il metodo GetPostManager(). PostManager può creare, modificare, aggiornare i post e selezionarli. Quindi, $ Blog-> GetPostManager() -> GetPosts ($ datefrom, $ dateto) restituirà la classe PostCollection, che implementa le interfacce Countable e Iterator per cercare i post. PostCollection è un array, contenente la classe PostItem. La classe PostItem è una classe semplice, che può mappare al database le sue proprietà.

+0

Grazie FractalizeR. Lo schema di fabbrica suona bene. Quindi, diresti che sarebbe sbagliato creare una classe con questi 3 metodi? So che ci sono più di 100 modi di fare le cose, ma credo che cerco il modo "migliore". Non necessariamente il più facile. Immagino che alla fine dovrebbe essere in grado di scalare se mai avessi voluto farlo. – JohnB

+0

No, la classe con tre metodi è buona ... Ma finché non si estende il sistema. Se voglio aggiungere più funzionalità, la tua classe diventerà rapidamente sovraffollata da un numero sempre maggiore di metodi. Quindi, penso che sia meglio creare una struttura all'inizio. Soprattutto, se non è molto complesso. –

Problemi correlati