S'initier au Zend Framework/Mini blog/Modèle

Un livre de Wikibooks.

Zend Framework
Programmation PHP / Zend Framework
Sommaire

Modifier ce modèle

[modifier] Création dans la base de données

Exemple de création de base de données MySQL :

CREATE USER 'monblog'@'localhost' IDENTIFIED BY 'monblog';
 
GRANT USAGE ON *.* TO 'monblog'@'localhost' IDENTIFIED BY 'monblog';
 
CREATE DATABASE IF NOT EXISTS `monblog` ;
 
GRANT ALL PRIVILEGES ON monblog.* TO 'monblog'@'localhost';

Exemple de création de table :

CREATE TABLE nouvelle (
	id INT NOT NULL AUTO_INCREMENT,
	titre VARCHAR(200),
	corps TEXT,
	categorie_id INT,
	heuredate DATETIME,
	PRIMARY KEY (id)
);

La table étant créée il nous faut configurer l'application pour pouvoir y accéder.

Voici, un exemple de configuration pour accéder à la base, il est aussi possible de centraliser la configuration dans un fichier séparé (XML, ini, etc).

Placez les paramètres de connexion dans la fonction initDb() de l'initialiseur du bootstrap (application/Bootstrap.php) :

    /**
     * Initialize data bases
     * 
     * @return void
     */
    public function initDb()
    {	
    	$params= array (	'host'     => '127.0.0.1',
                 	'username' => 'monblog',
                 	'password' => 'monblog',
                 	'dbname'   => 'monblog');
    	try {
	    	$db= Zend_Db::factory('PDO_MYSQL', $params);
			Zend_Db_Table::setDefaultAdapter ( $db );
		} catch ( Exception $e ) {
			exit ( $e->getMessage () );
		}
		Zend_Registry::set ( 'dbAdapter', $db ); // accessible partout
    }

Il est aussi possible de spécifier les paramètres de base de données dans le fichier application/configs/application.ini

[modifier] Le modèle

ZF a choisit par défaut la correspondance objet-SQL vers Table[1](voir aussi : ORM), c'est à dire qu'une table SQL est un objet Zend_Db_Table, une ligne est Zend_Db_Table_Row et plusieurs lignes Zend_Db_Table_Rowset.

Pour ajouter cet objet placez vous dans le dossier application/default/models, puis créez le fichier Nouvelle.php - n'oubliez pas la majuscule - (avec Zend Studio cela se fait par : bouton-droit New/Zend Framework Item/Zend Table) :

class Nouvelle extends Zend_Db_Table_Abstract {
 
	protected $_name = 'nouvelle';
 
}


Le framework va interroger la base pour connaître les méta-informations associées à la table et de ce fait il va trouver 'id' dans le cas de cette table mais on peut la spécifier avec $_primary.

Le modèle créé, nous allons le charger dans son contrôleur et ensuite des actions.

[modifier] Notes

  1. A single instance that handles the business logic for all rows in a database table or view. http://martinfowler.com/eaaCatalog/tableModule.html


◄ Retour vers « Le mini blog »

▲ Sommaire du livre ▲

Continuer : « Le contrôleur (mini blog) » ►