Un DAO per php: ore di lavoro in meno!

Un DAO per php: ore di lavoro in meno!

6942
3
CONDIVIDI

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!