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

Zend Framework
Programmation PHP / Zend Framework
Programmation PHP / Zend Framework
Sommaire
Modifier ce modèle


Création dans la base de données modifier

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

Le modèle modifier

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.

Sinon, on peut créer un modèle à l'aide de Zend Tool à la racine du projet faire


zf create db-table Nouvelle nouvelle

Ce qui va créer un fichier Nouvelle.php placé dans l’arborescence application\models\DbTable contenant :

<?php

class Application_Model_DbTable_Nouvelle extends Zend_Db_Table_Abstract
{

    protected $_name = 'nouvelle';


}

Notes modifier

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