Come devo configurare le mie lezioni?

voti
0

Sto iniziando a lavorare con oop per costruire un sito di dati generati dagli utenti.

Ci sono diversi tipi di dati provenienti dai miei corsi. Ho funzioni che ottenere un elenco di dati dal database, e le funzioni per selezionare un solo elemento da quelle liste. Per esempio

function Get_Article($aid); //Gets an article
function Get_Users_Articles($uid); //Gets a multidemsional array of the users 
                                   //articles
function Get_Latest_Articles(); //Self explanatory by now
function Get_Local_Articles($zip); //Gets articles written by local users
function Get_Local_Users($zip); //Gets all local users

function Get_All_Article_Comments($aid); //Gets a multidimensional array of the 
                                     //comments written for an article
function Get_Article_Comment($cid); //Gets a single article comment

Ora, come devo configurare le mie classi di organizzare queste funzioni. Devo solo metterli tutti nella stessa classe, o dovrei separare i commenti dagli articoli, o forse separare le funzioni che recuperano un solo articolo / commento da quelli che recuperare un elenco di articoli / commenti. Mi permetto di aggiungere più cose al sito in seguito che consentono per i commenti, così mi è stato pensare di appena separa tutte le funzioni di commento dagli altri. Inoltre, le funzioni di locali tutti utilizzare la stessa funzione che esegue la matematica, quindi dovrei gruppo quelli insieme, o forse solo utilizzare l'ereditarietà ... ogni suggerimento ???

Mentre sul tema della programmazione orientata agli oggetti, ho una classe utente che assomiglia a ... $ utente privato = array ();

public function Get_User_Data($uid){
  //get user data from database
  return $this->user;
}

public function Set_User_Data($user_array){
  $this->user = $user_array;
}

public function Add_User(){
  //INSERT IGNORE  data from $this->user into the database 
}

Ora Qualcuno vede nulla di sbagliato nel modo in questo sembra, per lo più, dovrei impostare l'user_data come parametro per la funzione add_user, invece di inserire le variabili membro?

È pubblicato 27/08/2009 alle 03:52
fonte dall'utente
In altre lingue...                            


1 risposte

voti
6

Prima di tutto è necessario capire che prendendo le funzioni vecchio stile procedurale e avvolgendoli dentro di oggetti non rendere il codice object-oriented, significa solo che si sta scrivendo codice di procedura più complicata e orribilmente brutto.

In secondo luogo vi consiglio vivamente, in realtà non posso essere troppo faticoso nelle mie raccomandazioni che si prendono del tempo per almeno studiare le varie framework PHP che sono là fuori. Mentre si può non usare mai nessuno di loro, mi sento abbastanza sicuro per garantire che studiare qualunque di esse vi darà una migliore comprensione su principi orientati agli oggetti e una buona progettazione delle applicazioni in generale. Nel caso in cui non hai mai visto alcun prima, il seguente dovrebbe dare un punto di partenza:

  • Zend Framework
  • symfony
  • CakePHP
  • quadro solare

Inoltre, se non hai mai sentito parlare di Martin Fowler o Patterns of Enterprise Application Architecture, vi consiglio vivamente di provare e prendere una copia. Ha letteralmente scritto il libro che ha fornito i modelli di base che sono in uso in OGNI framework web popolare.

Questo per quanto riguarda il mio 'leggere la risposta manuale' :-P

Nel tuo caso particolare vorrei iniziare con un modello Active Record di base per contenere la logica di accesso al database e la logica del dominio. In questo tipo di modello, ciascuna tabella del database (utenti, articoli, commenti) è rappresentato da un oggetto discreto. La classe Active Record di base per gli utenti dovrebbe contenere tutte le funzioni per ottenere un utente specifico o un elenco di utenti, nonché le funzioni per inserire, aggiornare o eliminare un utente. Inoltre, una classe di Active Record utente dovrebbe contenere metodi per caricare articoli e commenti di un utente.

Una classe di shell utente potrebbe essere simile a questo:

class User extends Active_Record {

public function find() {}

/**
    Single function performs inserts and updates for the object
**/
public function save() {}

public function delete() {}

public function getArticles() {}

public function getComments() {}
}
Risposto il 27/08/2009 a 04:26
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more