Teoria OOP di base: incomprensione del database circostante e delle classi utente

0

Novità di OOP e cercando di capire alcuni fondamentali di base. Attualmente utilizzo PHP5 per creare un'app Web di base.

Utilizzando il PDO integrato di PHP come classe del mio database e una classe utente creata separatamente che gestisce, tra le altre cose, l'accesso e l'uscita degli utenti, è meglio che la classe db si connetta al database in una situazione di accesso, o la classe utente deve connettersi direttamente al db? Se quest'ultimo, penso che probabilmente non capisco come PDO sarebbe autonomo.

Se il primo, presumibilmente una sorta di "classe helper" deve essere creata per facilitare la connessione db tra PDO e la mia classe utente?

    
posta Ryan 21.11.2013 - 11:37
fonte

1 risposta

0

Fondamentalmente vuoi una sola connessione al db. La responsabilità di connettere e "parlare" con il db non dovrebbe essere condivisa tra molte classi. Dovrai copiare, incollare l'host, il nome utente, le informazioni sulla password, che saranno piuttosto brutte, quando sposti il sito, e dovrai cercare tutte le tutte istanze di connessione al database e riscrivere esso. Bel baaad.

Quindi, il mio consiglio: la funzionalità relativa all'accesso va nella classe Login, nel DB correlato nella classe DataBaseHandler, nella formattazione HTML nella sua classe, ecc.

Esempio di DataBaseHandler:

DataBaseHandler.php:

class DataBaseHandler
{
     private $mysql_host = "myhost.example.com";
     ....

     function Connect()
     {
          $this->mysqli_object = mysqli_connect($this->mysql_host, $this->mysql_username, $this->mysql_password, $this->mysql_db);

          if ($this->mysqli_object->connect_errno)
          { 
               print "Failed to connect to MySQL: " . $this->mysqli_object->connect_error;
          }
     }

     ....
}

$dbHandler = new DataBaseHandler;
$dbHandler->Connect();

Se finisci di scrivere mySqlObject->connect(...) -s ovunque, farai molto lavoro per te.

Aggiornamento (relativo al commento) Il modo in cui l'ho usato (probabilmente non è la migliore pratica, dato che avevo smesso di scrivere php anni fa), ho inserito il file della classe ovunque mi servisse. Ma puoi chiedere in giro qual è la migliore pratica per questo (static? Global? Composition ???) in php. (Nel caso più semplice in C # vorrei fare un pigro valutatore pigro, probabilmente:))

    
risposta data 21.11.2013 - 16:46
fonte

Leggi altre domande sui tag