Classe Wrapper per database

Ciao Gianni sto creando una classe wrapper per mysql e mysql in modo da usarli indipendentemente ( e poi magari passare ad altri database ) insomma una classe che accomuni tutti sti linguaggi per permettermi di scrivere un'altra classe senza bisogno di sapere su che db girerà,fin qui mi è tutto chiaro . . . ma come la potrei fare?

per ora ho fatto una cosa del genere :

classe : Dabatase in classe_mysqli.php

   class DataBase{
      
      public $db;      
      
      function __construct($host, $uname, $passwd, $dbname){
   
            @ include_once('../config/error.php');
            
            $db = @ new mysqli($host, $uname, $passwd, $dbname);
            
            if(mysqli_connect_errno()){
            
            $error = 'Connection error # '.mysqli_connect_errno().": \n\t".mysqli_connect_error();
            
               if($errlog == 1){
                  //write error log
                  $this->WriteSqlLog($error);                  
               }else{      
                  //show error
                  echo $error;
               }
               
            }
            
                  
      }
      
      private function WriteSqlLog($lg){
      
            /* WriteSqlLog
             * data   : string $lg error to log
             * return : void
             * author : trashofmasters   <trashofmasters@gmail.com>
             * date     : 2006 . 5 . 11 14:36
             * description :
             *       if $errlog ( config/error.php ) is set to 1 log all database errors
             *       into log/sql.log
             */
            
            $file = '../log/sql.log';
            $log  = $lg.' - '.date("D M j Y G:i:s T")."\n";
            $handle = @ fopen($file,'a');
            $write  = @ fwrite($handle,$log);
            
      }
      
      function execQuery($query){
         
            /* execQuery
             * data   : string $query database query
             * return : string $result database response
             * author : trashofmasters   <trashofmasters@gmail.com>
             * date     : 2006 . 5 . 11 14:41   
             */
             
             $result = $db->query($query);
      }
   
   }

e in questa la chiamo classe_principale.php

   class Mile{   
                  
      function __construct(){
      
         include('../config/database.php');
         
         if(file_exists('class_'.$dbtype.'.php')){
            include('class_'.$dbtype.'.php');
         }else{
            echo 'Unable to select Database class';
         }   
         
         $d = new DataBase($dbhost, $username, $password, $dbname);
         
         $d->execQuery('select * from dirs'); //p
      }
   
   }

sto provando quindi ci sono pezzi di codice che non rimarranno a lungo, ma ci sono solo per prova.

il mio maggior problema è questo:

creare wrapper per la funzione di query, in modo da restituire un array come se fosse mysql_fetch_array alla classe che chiama il metodo della classe database

alcuni consigli e suggerimenti per farmi capire come fare?

PS: come potrei passare $errlog alla classe Database mettendo la variabile nel file incluso nella classe che chiama database,invece di includere un file a parte per vedere se i log sono attivi o no?

:bye:

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Se vuoi avere un'idea di come realizzare questa classe ti consiglio di studiare il funzionamento di PDO, che appunto è una classe di astrazione per l'accesso a database eterogenei. IN realtà PDO è inglobata in una estensione di PHP ma il suo utilizzo è identico a quello di una comune classe.

Oppure puoi vedere come funziona PEAR::DB, una classe pPEAR con funzioni simili. C'è anche ADODB.

Fai un po di ricerche così ti rendi conto.

Io, nei miei lavori uso una classe wrapper con funzionalità simili a quelle della classe DB dello Zend Framework.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda