Il tool che vi segnalo oggi può essere un buon compromesso per chi realizza web application native php senza l’ausilio di framework o cms. Php DAO consente di generare classi e metodi che permettono di effettuare in maniera semplice determinate operazioni all’interno di un database. Questo tool è più comunemente associato ai generatori di codice.
Utilizzo
Basta seguire questi semplici passi:
- Scarica l’ultima versione da http://phpdao.com/phpdao-2.6.zip;
- Decomprimi il file;
- Imposta i parametri di connessione all’interno del file: templates/class/dao/sql/ConnectionProperty.class.php;
- Lancia il file generate.php;
- Fine!
Come funziona?
Altrettanto semplice è il funzionamento che rappresento con un disegno:
Chiaro? Facciamo un esempio pratico:
create table if not exists News(
ID not null PRIMAY KEY auto_increment,
titolo varchar(150),
testo text,
data date
);
Questa è una semplice tabella che ho chiamato News.
Lancio il generatore DAO (generate.php)
automaticamente nel mio progetto il software crea una cartella (generated/) all’interno del quale rilascia tutte le query possibili per interrogare la tabella, eccone alcune:
class NewsMySqlDAO implements NewsDAO{
public function load($id){
$sql = 'SELECT * FROM News WHERE ID = ?';
$sqlQuery = new SqlQuery($sql);
$sqlQuery->setNumber($id);
return $this->getRow($sqlQuery);
}
public function queryAll(){
$sql = 'SELECT * FROM News';
$sqlQuery = new SqlQuery($sql);
return $this->getList($sqlQuery);
}
public function queryAllOrderBy($orderColumn){
$sql = 'SELECT * FROM News ORDER BY '.$orderColumn;
$sqlQuery = new SqlQuery($sql);
return $this->getList($sqlQuery);
}
}
Analogamente all’interno della mia applicazione non dovrò far altro che richiamare una di queste funzioni evitando righe di codice inutile e ore di lavoro!
Esempio di inserimento:
$newsSql = new NewsMySqlDAO();
$news->titolo = $_POST['titolo'];
$news->testo = $_POST['testo'];
$news->data = date('Y-m-d');
$newsSql->insert($news);
Esempio di eliminazione record
$newsSql = new NewsMySqlDAO();
newsSql->delete($_POST['ID]);
Esempio di estrazione dati (select)
$newsSql = new NewsMySqlDAO();
$sql = $gallerySql->queryByID($_GET['ID']);
foreach($sql as $row)
echo $row->titolo . '
';
}
Nel caso di estrazione dati il DAO mi fornisce diverse funzioni per poter effettuare una select by (nel mio caso) ID, titolo, testo e data.
Analogamente posso effettuare una select by title:
$newsSql = new NewsMySqlDAO();
$sql = $gallerySql->queryBytitolo($_GET['titolo']);
foreach($sql as $row)
echo $row->titolo . '
';
}
Buon lavoro!