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 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();
}
}
?>
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |