Chose promise, chose due ! En effet, votre apprentissage Zend n’est pas terminé. Le dernier article traitait, si votre mémoire est encore fraîche, de la structure basique d’un projet d’application.
Lorsque vous créez celui-ci vous retrouvez différents dossiers mais aussi divers fichiers ayant tous une fonction spécifique. Nous allons les passer brièvement en revue et expliquer leur but.
Classe Bootstrap
Cette classe permet de configurer l’application avant son lancement (un peu comme le fichier “index.php” qui contient la configuration de l’environnement). Le bootstrap contient au moins ces deux fonctions :
- initAutoLoad() qui permet de charger n’importe quel composant Zend dans toute l’application sans avoir à utiliser une seule directive “include” ou “require”.
- initViewHelpers() qui permet d’initialiser par exemple le layout commun au vue ou bien de définir un titre global pour les pages.
Fichier « application.ini »
Ce fichier de configuration permet de définir des ressources et d’autres paramètres comme les informations de connexion à une base de données (nom d’utilisateur, serveur, mot de passe, nom du schéma). Son contenu ressemble un peu à celui d’un fichier properties en Java, car il contient des paires « clé-valeur ».
Controllers
Le contrôleur, un peu à l’image d’une servlet, permet de traiter les requêtes qui lui sont envoyées. Par défaut, on retrouve deux contrôleurs (sous forme de classes):
- IndexController, qui contient une action “index” prédéfinie. L’exemple à la fin de ce paragraphe permet simplement de définir le titre de la page “index” qui sera affiché lors de l’appel du contrôleur et de l’action “index”.
- ErrorController, qui traite les erreurs (comme les erreurs 404, par exemple, qui survient lorsque la page n’existe pas).
public function indexAction()
{
$this->view->title = "Hello World !";
}
Views
Les vues sont les dossiers associés aux contrôleurs. Ainsi chaque contrôleur est donc lié à une vue (la classe IndexController possède une vue “index”). Chaque vue possède une ou plusieurs pages, qui sont en fait associées aux actions dans les contrôleurs.
Models
Dans un schéma MVC, il est important d’utiliser les modèles pour les accès aux données ou pour d’autres opérations logiques. Par exemple on peut faire hériter un modèle de la classe Zend_Db_Table, qui sera finalement une représentation d’une table de notre schéma. Zend Framework intègre en fait son propre ORM (Object Relational Mapper) et son propre pilote MySQL. Voici un modèle de base pour une table “User” qui contient, entre autre, un champ « idUser » :
class Model_User extends Zend_Db_Table
{
protected $_name = "User"; // Table name in DB
public function getUser($idUserVar)
{
$row = $this->fetchRow(
'idUser = ' . $idUserVar
);
return $row;
}
}
Forms
Il est possible de créer des formulaires grâce aux classes fournies par Zend. Cela peut faciliter la chose si on n’y connait rien en HTML. Cependant les formulaires Zend présentent des inconvénients majeurs :
- Difficulté de personnalisation.
- Impossibilité de voir le code que cela va générer. Il faut analyser le code source lors de l’exploration de la page.
- Validation des champs un à un.
Et après?
Bien sûr, il existe d’autres éléments mais revenir immédiatement sur la description de ceux-ci risquerait de vous perturber dans votre découverte.