Costruire una classe di database in PHP

3

Mi chiedo se dovrei scrivere una classe di database per la mia applicazione e, in caso affermativo, come ottenerla?

Laggiù in SO, un ragazzo menzionato dovrebbe essere scritto come una classe astratta. Tuttavia, non riesco a capire perché questo sarebbe un vantaggio.

Ho capito bene, che se scrivessi una classe astratta, ogni altra classe che i metodi avessero bisogno di una connessione al database, potremmo semplicemente estendere questa classe astratta e avere il suo oggetto di database? In tal caso, in che modo è diverso da una classe "normale" in cui è possibile creare un'istanza di un oggetto di database?

Un altro metodo sarebbe quello di dimenticare completamente la mia classe e di istanziare un oggetto mysqli su richiesta.

Che cosa consigli?

    
posta Sprottenwels 18.10.2013 - 08:23
fonte

2 risposte

5

Sì, dovresti usare le classi per accedere al tuo database. Un buon link per ulteriori approfondimenti su questo è cercare il Pattern di registrazione del record attivo e Mappatura relazionale degli oggetti

Il vantaggio di questo può essere visto nel Principio di DRY e nella domanda Law of Demeter che è stato chiesto in precedenza . Creando una classe di accesso ai dati astratti, mantieni il livello di accesso ai dati parte della tua applicazione da perdite nelle classi di entità modello / database E non devi ripetere te stesso ogni volta che devi creare un nuovo modello / entità di database.

Ok, quindi torna alla tua domanda, così ora, costruiamo una classe astratta per gestire il CRUD per le nostre entità di database, quindi ora abbiamo solo bisogno di estendere quella classe astratta e probabilmente di impostare alcune variabili ogni volta che aggiungiamo una nuova entità nel database. Rende meno fastidioso e molto più facile da gestire scrivere SQL per i tuoi tavoli spostandoli tutti verso la classe astratta e rende il livello di accesso ai dati della tua applicazione molto più gestibile, specialmente se hai un modello di bazzillion / entità di database.

Quindi, qual è la differenza tra la creazione della classe astratta e la creazione di una classe del modello di database, quindi l'istanziazione con una connessione al database? O l'intenzione di usare semplicemente mysqli?

  1. Con la classe astratta, devi solo codificare il livello di accesso ai dati della tua applicazione UNA VOLTA
  2. Il tuo codice diventa DRY eliminando le inizializzazioni di database ridondanti
  3. Migliore manutenzione, è sufficiente modificare una parte del codice per cambiare la modalità di accesso al database!
  4. SQL Haters delizia! Non hanno più bisogno di direttamente toccare le istruzioni SQL quando si occupano di ORM

Ma dato che siamo programmatori, suggerirei di non ricostruirlo da zero. Non c'è bisogno di reinventare la ruota come direbbero. Esistono già framework per PHP che gestiscono elegantemente ORM. Puoi cercare i MVC popolari framework per PHP come Yii e Kohana .

    
risposta data 18.10.2013 - 09:01
fonte
0

Credo che questo link risponda alla tua domanda in qualche misura. Ha usato l'approccio OOP e ben spiegato. Ecco un semplice scheletro dal link: '

class Database  
{  
    public function connect()   {   }  
    public function disconnect()    {   }  
    public function select()        {   }  
    public function insert()        {   }  
    public function delete()        {   }  
    public function update()    {   }  
}  '
    
risposta data 18.10.2013 - 12:23
fonte

Leggi altre domande sui tag