Zend Framework (ZF) : un livre d’or, troisième étapes : Bases des fichiers

Créations d’un livre d’or en 6 étapes

  1. Définition
  2. Créations des tables sql et des répertoires
  3. Bases des fichiers
  4. Affichages et ajout de messages
  5. Modification et suppression des messages
  6. Conclusions

Bases des fichiers

Avant tout, il nous faut créer les différents fichier .htaccess

 RewriteEngine on #RewriteBase /serveur/mon_repertoire/ RewriteRule .* index.php php_flag magic_quotes_gpc off php_flag register_globals off

La ligne en commentaire, permet dans le cas d’une erreur de ce type : Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (serveur)’ in de corriger le problème, pour un accès, par exemple, via : http://localhost/serveur/mon_repertoire/

LivreControllers.php

 <?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php'; class LivreController extends Zend_Controller_Action { 	public function indexAction() 	{ 		echo 'Index du livre d\'or'; 		return; 	} 	public function ajouterAction() 	{ 		$this->view->title .= ' .: Ajout d\'un message'; 		echo 'ajout d\'un message!'; 		return; 	} }

Le controlleur, c’est ce qui va diriger notre application

index.php

 <?php error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Europe/Brussels'); set_include_path('.' . PATH_SEPARATOR . '../site/lib' . PATH_SEPARATOR . './app/models/'  . PATH_SEPARATOR . get_include_path()); include 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Config_Ini'); Zend_Loader::loadClass('Zend_Registry'); Zend_Loader::loadClass('Zend_Db'); // load configuration $config = new Zend_Config_Ini('./app/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // setup database $db = Zend_Db::factory($config->db->adapter,  $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); // Régler le dossier des contrôleurs par défaut : $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./app/controllers'); // run! $frontController->dispatch();

Livre.php

 <?php Zend_Loader::loadClass('Zend_Db_Table'); class Livre extends Zend_Db_Table {     protected $_name = 'livre';     protected $_primary = 'id'; 	public function insertObject($object) 	{ 		return parent::insert((array) $object); 	} 	public function updateObject($object, $where) 	{ 		return $this->update((array) $object, $where); 	} }

Le modèle du livre, c’est-à-dire les données -> ici la base des données.

Date.php

 <?php class MyWsp_View_Helper_Date { 	/** 	 * Retourne une date sous forme d'une chaîne, au format donné par le 	 * paramètre format, fournie par le paramètre timestamp ou la date et 	 * l'heure courantes si aucun timestamp n'est fourni. En d'autres termes, 	 * le paramètre timestamp est optionnel et vaut par défaut la valeur de la 	 * fonction time(). 	 * Plus d'info sur http://www.php.net/manual/fr/function.date.php 	 * 	 * @param string $format format de la date 	 * @param int $timestampdate à formaté 	 * 	 * @return string 	 */ 	public function date($format, $timestamp = null) 	{ 		if (!is_nan($timestamp)) 			$timestamp = time(); 		// see http://www.php.net/manual/fr/function.strftime.php 		$dates = array( 			'DDDD'	=> '%A', 			'DDD'	=> '%a', 			'DD'	=> '%d', 			'D'		=> '%e', 			'MMMM'	=> '%B', 			'MMM'	=> '%b', 			'MM'	=> '%m', 			'YYYY'	=> '%Y', 			'YY'	=> '%y', 			'HH'	=> '%H', 			'hh'	=> '%I', 			'mm'	=> '%M', 			'ss'	=> '%S', 		); 		return strftime(str_replace(array_keys($dates), array_values($dates), $format), $timestamp); 	} }

config.ini

 [general] db.adapter = PDO_MYSQL db.config.host = localhost db.config.username = root db.config.password = db.config.dbname = livredor

Contient la configuration pour accéder à la base de donnée du livre d’or.

Test

Rendez-vous à l’adresse de votre script :

  • Lire les messages : http://localhost/serveur/mon_repertoire/livre/
  • Ajouter un message : http://localhost/serveur/mon_repertoire/livre/ajouter/

Si tout est ok, passons à la suite!

Zend Framework (ZF) : un livre d’or, deuxième étapes : Créations des tables sql et répertoires

Créations d’un livre d’or en 6 étapes

  1. Définition
  2. Créations des tables sql et des répertoires
  3. Bases des fichiers
  4. Affichages et ajout de messages
  5. Modification et suppression des messages
  6. Conclusions

Créations des tables sql

Créer une nouvelle base de donnée dans votre serveur mysql. Ensuite exécuter la requête suivante :

CREATE TABLE `livre` (

 `id` int(10) unsigned NOT NULL auto_increment,  `date` int(10) unsigned NOT NULL,  `message` text character set utf8 collate utf8_unicode_ci NOT NULL,  `nom` varchar(60) character set utf8 collate utf8_unicode_ci NOT NULL,  PRIMARY KEY  (`id`),  KEY `inde` (`date`)

);

La structure de la table correspond donc a ceci :

Champ Type Défaut Extra
id int(10) auto_increment
date int(10)
message text
nom varchar(60)

Très simple et rien de compliquer jusque là, enfin normalement.

Structure du script

Les répertoires d’abords :

 /site     /lib         /Zend --> ici le zend framework /test     /app         /controllers         /models         /views             /scripts                 /livre

Et avec les fichiers :

 /app     /controllers         LivreControllers.php     /models        Livre.php     /views         /helpers         /scripts             header.phtml             footer.phtml             /livre                 livre.phtml                 ajouter.phtml     config.ini index.php .htaccess
Pourquoi une tel disposition?

En fait, ZF va chercher de manière automatique grâce, notamment, au ViewHelper où se trouve les différent fichiers et les charger automatiquement! Zf utilisé le système MVC, c’est-à-dire modèle-vue-contrôleur!

  • Contrôleur : Lien entre la vue et le modèle, réagit au requête de l’utilisateurs, etc
  • Vue : ce que voix l’utilisateur, souvent le système de templates, donc c’est la présentation des données!
  • Modèle : accès aux données, en gros accès à la base des données, au fichiers, etc

Cependant divers dossiers peuvent se trouver à d’autres emplacement, mais ici on fait dans le simple!

Pensez à utiliser mon script pour avoir plus facile …

Zend Framework (ZF) : un livre d’or, première étapes : définition

Créations d’un livre d’or en 6 étapes

  1. Définition
  2. Créations des tables sql et des répertoires
  3. Bases des fichiers
  4. Affichages et ajout de messages
  5. Modification et suppression des messages
  6. Conclusions

Définition des besoins

Pour faire un livre d’or très basique :

  • Ajout de message
  • Affichage de messages
  • Modération : modification et suppression des messages

Par après on peux ajouter différents éléments :

  • Smileys
  • Site-web et email des auteurs
  • Et des trucs plus fun : cache, css, …

Création de répertoire automatique, en php, via une structure txt

Nombres de tutoriaux de programmation présente la structure des différents répertoires sous la forme d’unt exte de cette forme : /home /admin /index /ajouter /delete /news /id /totor

C’est souvent assez embettant de recréer chaque répertoire alors qu’un simple script suffit ….

Voici ce script

<?php   $tab = '    ';   $shema = <<<UYJY /home /admin /index     /ajouter     /delete     /news         /id     /totor UYJY;   $shema = str_replace("
 ", " ", $shema); $shemas = explode(" ", $shema);   $curdir = array(); $curdir[0] = dirname(__FILE__) . '/rep'; mkdir($curdir[0], 0777); $lastNiv = 0;   foreach ($shemas as $line) { 	//profondeur du rep 	$Niv = substr_count($line, $tab) + 1;   	//nom rep 	$rep = substr($line, ($Niv-1) * strlen($tab));   	if ($Niv < $lastNiv) 	{ 		//répertoire supérieur 		//delete des chemin inférieur 		for ($i = $Niv + 1; $i <= count($curdir); $i++) 		{ 			unset($curdir[$i]); 		} 	}   	//save du niveau + chemin 	$lastNiv = $Niv; 	$curdir[ $Niv ] = $curdir[ $Niv - 1 ] . $rep;   	//création rep 	if (mkdir($curdir[ $Niv ], 0777)) 		echo 'Répertoire (' . $curdir[ $Niv ] . ') créé!<br />' . " "; 	else 		echo 'Répertoire (' . $curdir[ $Niv ] . ') <strong>n\'a pas</strong> être créé!<br />' . " "; }
  • $curdir[0] : Le répertoire de base où sont créer les répertoires,
  • $shema : Le schéma à suivre pour créer les répertoires.
  • $tab : L’espace pour un répertoire (tabulation, 4 espaces, … (doit-être régulier!)

Zend Framework, simple?

Cela fait longtemps que je zyeut Zend Framework, sans pour autant plonger, aujourd’hui j’ai gouter, apprécier, dévorer, bref l’applaudit.

En gros, c’est le framework comme je le voix ou presque!

Simple, claire, extensible, gestion d’exception, sans des dépendance inutiles, passant par pdo, …

I like

D’ailleurs je pense que MyWsp se basera dessus, je delete les 3/4 de ce que j’ai fait et hop je repart, simplement parceque c’est vraiment pratique et rapide!

Bientôt, je sortirait certainement quelques tuto sur Zend Framework!