Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di sko
    Registrato dal
    Jun 2003
    Messaggi
    273

    php oggetti e connessioni

    So che è un argomento piu' volte affrontato ma leggendo non ho ancora le idee chiare. premetto che ho discrete basi su php4 è teoricamente conosco la programmazione ad oggetti, ma non l ho mai affontata nel contesto applicazione web.

    l'idea che mi sono fatto grosso modo di come potrebbe essere utile è la seguente:

    classe utente
    --metodi
    ---setUser
    ---setEmail
    ---save

    il metodo save deve quindi sfruttare una connessione del db

    quindi qualcosa dentro save del tipo
    $test = $obj_pdo->prepare('bla bla');
    $test->execute();

    dovrei avere quindi l'oggetto $obj_pdo che credo in questo modo
    $obj_pdo = new PDO($dns, $user, $pass); visibile

    il punto e che per ogni richiesta http vorrei creare questo oggetto una sola volta
    e tenerlo visibile per tutti i metodi delle altre classi che utilizzo come
    ->save() etc. in modo da poter fare una sola connessione al db per pagina

    è giusto il ragionamento? come mi conviene creare l'oggetto obj_pdo per fare in modo che sia
    visibile da tutte le classi?

    ps. se avete da consigliare un libro, meglio se cartaceo su questi argomenti mi sarebbe utile, non tanto su come si programma ad oggetti come ho visto su alcuni manuali, ma come ottimizzare il tutto programmando ad oggetti...

  2. #2
    Utilizza ol pattern singleton oppure passa l'oggetto come parametro del costruttore quando crei le istanze degli oggetti che ti servono?

  3. #3
    Utente di HTML.it L'avatar di sko
    Registrato dal
    Jun 2003
    Messaggi
    273
    Originariamente inviato da filippo.toso
    Utilizza ol pattern singleton oppure passa l'oggetto come parametro del costruttore quando crei le istanze degli oggetti che ti servono?

    ho letto un po il pattern singleton... sembra fare al caso mio..
    pero ho un problema.. a me serve un oggetto di una classe PDO, non di una che creo io...

  4. #4
    C'è qualcosa che ti vieta di creare una classe singleton al cui interno vi sia una proprietà contenente la classe PDO?

  5. #5
    Utente di HTML.it L'avatar di sko
    Registrato dal
    Jun 2003
    Messaggi
    273
    Codice PHP:
    class DB {
       private static 
    $_istance null;
       private 
    $dns 'mysql:host=localhost;dbname=name'// mysql        
        
    private $user="root";        
        private 
    $pass="pass";         
    /* il costruttore è privato */       
          
    private function __construct()          
             {       
               
    $this->_istance = new PDO($this->dns$this->user$this->pass);                
              }           
           public static function 
    getIstance()    {      
              if(
    self::$_istance == null)      
                    {             
                      
    $c __CLASS__;          
                      
    self::$_istance = new $c;       
                      }              
             return 
    self::$_istance;    
           } 

    stavo provando qualcosa del genere, ma è evidente che sto sbagliando qualcosa ....

  6. #6
    Utente di HTML.it L'avatar di sko
    Registrato dal
    Jun 2003
    Messaggi
    273
    allora ho provato ad aggiungere alla classe il seguente metodo:

    Codice PHP:
     public function getDb(){  
           return 
    $this->_istance;    

    ed ora in ogni classe che mi serve usare il db utilizzo

    $db=DB::getIstance();
    $db=$db->getDb();

    è corretto?

  7. #7
    Utente di HTML.it L'avatar di sko
    Registrato dal
    Jun 2003
    Messaggi
    273
    nessuno?

  8. #8
    Ma che te ne fai dell'istanza della classe che gia` avrai perche` la crei?
    A te serve semplicemente un:
    $dbh = new PDO($dns, $usr, $pwd);
    return $dbh;

    e poi lavori con $dbh-><metodi/prop tuoi dentro la classe>.


    Visto che l'oggetto del trhead e` quello giusto, ne approfitto invece per un'altra domanda che semmai metto in titolo a parte:

    in una connessione PDO persistente, come
    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));
    e` un problema se a fine script c'e` un
    set $dbh=NULL ?

    E su connessioni non persistenti? Meglio lasciare che il... chiamiamolo garbage collector, si arrangi a chiudere la connessione da solo a fine script o meglio chiusura esplicita? In caso ci sia un buon sistema di cache con chiusura esplicita magari si viene tagliati fuori dall'ottimizzazione.

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.