PHP  »  Articoli  »  Zend Framework 

Approfondimenti sul modulo Zend_db

di: Gabriele Farina     06 Luglio 2006

Qualche settimana fa abbiamo iniziato a parlare degli strumenti forniti dallo Zend Framework per accedere in modo univoco alla maggior parte dei database supportati da PHP. Lo strumento in questione era la libreria Zend_Db che forniva un layer che, sfruttando PDO e qualche aggiunta da parte degli sviluppatori della libreria, permetteva di gestire agilmente la maggior parte delle esigenze relative allo sviluppo utilizzando i database.

In questo articolo continuerò il discorso iniziato introducendo una serie di classi ausiliarie che permettono di effettuare operazioni su database utilizzando una sintassi ad oggetti ed astraendo gran parte dell'SQL dal motore utilizzato. Le classi in questione fanno parte del modulo Zend_Db e permettono di effettuare operazioni di selezione nonchè inserimenti e modifiche alle singole righe.

La classe Zend_Db_Table

La prima classe che prendiamo in considerazione è Zend_Db_Table; la classe è sviluppata appoggiandosi a Zend_Adapter, che utilizza per connettersi ad una tabella specifica, recuperare informazioni sulla sua struttura ed esporre alcuni metodi per effettuare operazioni sulle righe e le colonne.

<?php

require_once 'Zend/Db.php';
require_once 'Zend/Db/Table.php';

$params = array (
    'host'	=> 'localhost',
    'username'	=> 'gabriele',
    'password' 	=> 'farina',
    'dbname'   	=> 'html_it'
);

$db = Zend_Db::factory('pdoMysql', $params);

/*	Assegnamo l'adapter di default che verrà utilizzato
*	da ogni istanza di Zend_Db_table per accedere alla tabella
*	specifica
*/
Zend_Db_Table::setDefaultAdapter($db);


// Creiamo una classe che si riferisce ad una tabella sul nostro DB
class Articles extends Zend_Db_Table
{
}

$articles = new Articles();

?>

Per poter usufruire della classe Zend_Db_Table è necessario eseguire due operazioni fondamentali: la prima è quella di assegnare uno Zend_Adapter da utilizzare ogni volta che un'istanza di Zend_Db_Table avrà necessità di connettersi alla tabella di riferimento oppure effettuare query su di questa; la seconda è quella di definire una o più classi che estendono Zend_Db_Table e rappresentano le tabelle nel nostro database. Queste classi, quando inizializzate, recupereranno informazioni sulla struttura e sul contenuto dalle corrispettive tabelle presenti nel database e ci forniranno alcuni metodi per accedervi comodamente.

Il comportamento standard delle classi che estendono Zend_Db_Table è quello di recuperare il nome della tabella a cui devono fare riferimento dal nome della classe, trasformandolo in minuscolo ed anteponendo un underscore a tutte le lettere precedentemente maiuscole a parte la prima, e di utilizzare id come nome della colonna che rappresenta la chiave primaria. Ovviamente possiamo modificare questo comportamento:

<?php

// ... setup ...

class HtmlItArticles extends Zend_Db_Table
{
	protected $_name = 'articles';
	protected $_primary = 'article_id';
}

?>

In questo modo la classe HtmlItArticles farà riferimento alla tabella articles ed utilizzerà la colonna article_id come chiave primaria. In alternativa è possibile sovraccaricare il metodo _setup() e specificare questi valori come proprietà dell'istanza:

<?php

// ... setup ...

class HtmlItArticles extends Zend_Db_Table
{
	
	protected function _setup()
	{
		$this->_name = 'articles';
		$this->_primary = 'article_id';
		
		// Operazione fondamentale
		parent::_setup();
	}
}

?>

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti