Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [oop] database e query

  1. #1

    [oop] database e query

    Salve,

    sto realizzando un progettino e ho alcuni dubbi su alcune classi che sto creando..

    A livello teorico io ho una classe "database" che mi fa le funzioni basilari di un database... per le query ho pensato ad un approccio di questo tipo:

    1) ho una classe mysqlQuery che è figlia della classe database
    2) mysqlQuery si compone di varie classi (es. insertQuery, selectQuery)

    quindi ho:
    Codice PHP:
    class database {

    }

    class 
    mysqlQuery extends database {
            public 
    $query;

        public function 
    __construct$type ) {
            
    parent::getInstance();
            switch( 
    $type ) {
                case 
    'select':
                    
    $this->query = new selectQuery();
                    break;
                case 
    'insert':
                    
    $this->query = new insertQuery();
                    break;
            }
        }
    }

    class 
    insertQuery {
    }

    class 
    selectQuery {

    come potete vedere la classe mysqlQuery ha una proprietà pubblica che è la query stessa.. Ora io uso questa proprietà all'interno di altre classi ad esempio la dataViewer.class.php in questo modo:
    Codice PHP:
    class dataViewer {
        public function 
    view$tab$what '*'$where = array() ) {
            
    $db = new mysqlQuery'select' );
            
    $db->query->select$what );
            
    $db->query->from$tab );
            }

    quello che voglio sapere è se è un approccio abbastanza sostenibile oppure no... ovviamente ci sono metodi migliori ma nelle mie seghe mentali sono arriva a questo, in particolare avere una classe su una proprietà pubblica mi scoccia un poco...

    e pure lo switch su mysqlQuery mi scoccia..

    **alcuni pezzi di codice sono stati omessi ovviamente
    Questa volta, più che un voto.. è favoreggiamento.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    a livello concettuale si possono fare tante cose... una classe "database" mi sembra già sufficiente... forse dovresti pensare a una query come a un metodo, non come a una sottoclasse

  3. #3
    Originariamente inviato da eiyen
    a livello concettuale si possono fare tante cose... una classe "database" mi sembra già sufficiente... forse dovresti pensare a una query come a un metodo, non come a una sottoclasse
    avrei una classe database lunga un chilometro e sarebbe un casino gestire tutti i metodi...
    con tutte le query poi sarebbe un macello avere una classe sola.. e poi il database ovviamente ha un metodo setQuery:

    Codice PHP:
    public function setQuery$query ) {
        
    $this->query $query;

    ma la query gliela mando già bella e pronta...
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    vorrei capire cosa per te rappresenta la classe "database" (concettualmente)... cmq se ritieni di voler organizzare le cose così non ci sono di per sè problemi: penso semplicemente che un'unica classe "DATABASE" generica sarebbe un approccio più pragmatico. Se vuoi mantenere il tuo approccio puoi spiegare meglio il tuo dubbio? Parlavi di dubbi sulla proprietà pubblica "query"... puoi spiegare meglio? E che problemi ci sono con lo switch esattamente?

  5. #5
    Originariamente inviato da eiyen
    vorrei capire cosa per te rappresenta la classe "database" (concettualmente)... cmq se ritieni di voler organizzare le cose così non ci sono di per sè problemi: penso semplicemente che un'unica classe "DATABASE" generica sarebbe un approccio più pragmatico. Se vuoi mantenere il tuo approccio puoi spiegare meglio il tuo dubbio? Parlavi di dubbi sulla proprietà pubblica "query"... puoi spiegare meglio? E che problemi ci sono con lo switch esattamente?
    Non mi sembra molto elegante usare una proprietà pubblica (che poi è una classe) all'interno di altre classi... ad esempio:

    classe dataViewer.class.php, metodo 'view':
    Codice PHP:
        public function view$tab$what '*'$where = array() ) {
            if ( 
    $table '' ) {
                throw new 
    Exception'Ho bisogno di sapere quale tabella vuoi analizzare.');
            }

            
    $db = new mysqlQuery'select' );
           
    // proprietà come classe.......
            
    $db->query->select$what );
            
    $db->query->from$tab );

            if ( !empty( 
    $where ) ) {
                if ( 
    method_exists$db->query$where['callback'] ) ) {

                     
    // e anche questo approccio non mi sembra elegante {$var}
                    
    $db->query->{$where['callback']}( $where['value'] );
                    } else {
                    throw new 
    Exception'Il metodo che vuoi utilizzare non esiste: ' $where['callback'], );
                }
            }
            if ( 
    $db->exe() ) {
                return 
    call_user_func( array( $db$this->method ) );
                } else {
                
    $this->msg 'La query Non è andata a buon fine.';
                return 
    FALSE;
            }
        } 
    vedi i commenti... per funzionare funziona ma ho la sensazione che c'è qualcosa che non quadra.....

    magari è solo una sega mia..
    Questa volta, più che un voto.. è favoreggiamento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.