Dans cette première partie, nous allons voir comment préparer son
environnement de développement pour créer une application avec le Zend
Framework.
Nous allons aussi télécharger les éléments nécessaire à la réalisation de notre application.
Pour cela, nous allons nous rendre dans le dossier de MAMP (ou WAMP) ressemblant a cela :

Nous allons créer un dossier nommé frameworks à la racine de façon à mettre notre Zend Framework.

Ainsi, nous pouvons mettre le dossier library de notre Zend Framework dans le dossier frameworks créé en suivant cette hiérarchie :

Une fois cela fait il faut créer un dossier contenant votre application dans le dossier htdocs (MAMP) ou www (WAMP) que l’on nommera watchmydesk pour s’y retrouver tout au long des épisodes.
Dans ce dossier nous allons ajouter tous les dossier qui vont être obligatoires pour notre application :

C’est brut de décoffrage, je sais mais je viens aux explications sur l’utilité des dossiers créés !
Les données correspondant au frontController indique à votre application où chercher les modules, le contrôleur par défaut, l’action par défaut et le module par défaut.
Ce fichier va nous permettre de ne pas répéter la description de notre page HTML (header et footer) tout en pouvant modifier certaines variables dans le HTML du layout. Ici on appelle la méthode layout()->content pour afficher dans notre div container le contenu des vues qui sont appelées.
Nous allons aussi télécharger les éléments nécessaire à la réalisation de notre application.
Plan de l’épisode #1
- Les logiciels que nous allons utiliser
- Mise en place du framework
- Mise en place des fichiers de démarrage
- Vérifications
- Conclusion
- Notes
Les logiciels que nous allons utiliser
Dans cet épisode, nous allons nous concentrer sur la mise en place de l’environnement pour que le Zend Framework puisse être utilisé.- Il faudra vous munir d’un éditeur de texte ou d’un IDE : Je vous conseille donc Eclipse avec le mode PHP
- Un environnement LAMP (Linux) avec WAMP (Windows) ou MAMP (Mac)
- Le Zend Framework en version 1.8.4 (au moment où est écrit cette série)
Mise en place du Framework
Pour commencer nous allons nous occuper du Zend Framework, et de sa position au cœur de la hiérarchie de nos fichiers.Pour cela, nous allons nous rendre dans le dossier de MAMP (ou WAMP) ressemblant a cela :
Nous allons créer un dossier nommé frameworks à la racine de façon à mettre notre Zend Framework.
Ainsi, nous pouvons mettre le dossier library de notre Zend Framework dans le dossier frameworks créé en suivant cette hiérarchie :
Une fois cela fait il faut créer un dossier contenant votre application dans le dossier htdocs (MAMP) ou www (WAMP) que l’on nommera watchmydesk pour s’y retrouver tout au long des épisodes.
Dans ce dossier nous allons ajouter tous les dossier qui vont être obligatoires pour notre application :
C’est brut de décoffrage, je sais mais je viens aux explications sur l’utilité des dossiers créés !
Le dossier application
Dans ce dossier on retrouve 8 dossiers qui ont tous une fonction bien déterminée.- configs
Dans ce dossier, nous allons mettre notre fichier application.ini qui représentera la configuration de notre application. On aura donc l’adapter pour correspondre à la version de MySQL utilisée, la config pour le MVC, l’include path (pour inclure le Zend Framework à notre projet) - forms
On retrouvera dans ce dossier tout les formulaires de notre application. - languages
Comme son nom l’indique, ici on mettra les fichiers de langue pour avoir une application en anglais et en français ! - layouts
Ce sont les fichiers qui vont permettre de définir le style commun a certaines pages, par exemple vous ne voulez pas répéter la structure HTML du header de votre site, c’est ici ! Mais nous y reviendrons par la suite. - models/DbTable
Les modèles sont les classes PHP qui permettent de faire des requêtes SQL sur la base de données sans avoir a écrire cette même requête. - modules
Ici, comme vous pouvez le voir, nous avons deux dossiers backend et frontend représentants les pages de l’administration et du site en lui même ! Dans ces deux dossiers, on retrouve le dossier controllers et views .
Le contrôleur est une classe PHP qui permet d’effectuer des actions dès que l’utilisateur appelle une certaine page et ce contrôleur envoie les informations à une vue correspondante qui affiche le résultat au visiteur . - plugins
Les plugins de notre application. - views/helpers
Les helpers sont des aides qui permettent d’exécuter des actions dans la vue (la partie HTML).
Le dossier library
Ce dossier est à utiliser pour ajouter des composants ou étendre des composants de Zend qui ne vous conviennent pas pour votre application. Par exemple vous voulez ajouter une fonctionnalité à un composant, il faut le mettre dans ce dossier, mais nous y reviendrons le moment venu !Le dossier public
C’est le point d’entrer de votre application. Il contient donc les styles CSS, les images de votre application ainsi que les fichiers javascripts.Mise en place des fichiers de démarrage
Les fichiers de démarrage sont très importants pour que votre application fonctionne correctement. Nous allons devoir coder au total 8 fichiers pour pouvoir voir si notre application fonctionne.Le fichier index.php
Ce fichier doit être situé dans le dossier public/ de votre application qui représente notre point d’entrée et doit contenir ces lignes de code :defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
defined('LIBRARY_PATH')
|| define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../library'));
defined('ZEND_PATH')
|| define('ZEND_PATH', realpath(dirname(__FILE__) . '/../../../frameworks'));
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// On modifie l'include path de PHP
set_include_path(implode(PATH_SEPARATOR, array(
realpath(ZEND_PATH),
get_include_path(),
)));
// On a besoin de Zend Application pour lancer notre application
require_once 'Zend/Application.php';
// On lance la session
require_once 'Zend/Session.php';
Zend_Session::start();
// On créé l'application, on lance le bootstrap et on lance l'application !
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Le composant Zend_Application permet de lancer notre application sans
se soucier de grand chose, en effet, vous avez à lui passer
l’environnement de l’application ainsi que le fichier de configuration,
et c’est parti !Le fichier application.ini
Ce fichier doit être situé dans le dossier applications/configs et doit contenir ces lignes de code :[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpSettings.date.timezone = "Europe/Paris" includePaths.library = LIBRARY_PATH bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" ; so auto-loading will find our classes in library/App autoloaderNamespaces[] = "App_" ; initialize database resources.db.adapter = "MYSQLI" resources.db.params.host = "localhost" resources.db.params.username = "root" resources.db.params.password = "root" resources.db.params.dbname = "watchmydesk" resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss" resources.db.isDefaultTableAdapter = true ; initialize front controller resource resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.defaultControllerName = "index" resources.frontController.defaultAction = "index" resources.frontController.defaultModule = "frontend" ; initialize layout resource resources.layout.layoutPath = APPLICATION_PATH "/layouts" [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1Ici, on déclare tout ce qui touche à la base de données (qui sera créée dans le prochain épisode), les ressources pour le frontController ainsi que les dossiers à inclure dans votre application. Par exemple ici, on a inclut le dossier library, le dossier application et le dossier où est contenu le Zend Framework.
Les données correspondant au frontController indique à votre application où chercher les modules, le contrôleur par défaut, l’action par défaut et le module par défaut.
Le fichier Bootstrap.php
Ce fichier doit être situé dans le dossier application/ de votre application et doit contenir ces lignes de code : class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function run()
{
// Cela permet d'avoir la configuration disponible de partout dans notre application
Zend_Registry::set('config', new Zend_Config($this->getOptions()));
parent::run();
}
protected function _initAutoload()
{
// On enregistre les modules (les parties de notre application), souvenez-vous : Backend et Frontend
$loader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH));
return $loader;
}
protected function _initSession()
{
// On initialise la session
$session = new Zend_Session_Namespace('watchmydesk', true);
return $session;
}
protected function _initView()
{
// Initialisation de la vue et des helpers de vue
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
// On ajoute le dossier des helpers
$view->addHelperPath(APPLICATION_PATH . '/views/helpers');
// On charge l'helper qui va se charger de la vue
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);
return $view;
}
}
Au cours de notre développement, nous reviendrons dans ce fichier ajouter des éléments.Le fichier IndexController.php
Ce fichier doit être situé dans le dossier application/modules/frontend/controllers de votre application et doit contenir ces lignes de code : class IndexController extends Zend_Controller_Action {
public function indexAction(){
}
}
Le fichier ErrorController.php
Ce fichier doit être situé dans le dossier application/modules/frontend/controllers de votre application et doit contenir ces lignes de code :class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
default:
// application error
$this->getResponse()->setHttpResponseCode(500);
$this->view->message = 'Application error';
break;
}
$this->view->exception = $errors->exception;
$this->view->request = $errors->request;
}
}
Comme vous pouvez le voir, nous utilisons beaucoup le mot clef $this
qui représente l’objet courant. C’est ainsi que nous pouvons accéder à
la vue et affecter des variables à la vue. Nous y reviendrons plus en
détails dans quelques épisodes.Le fichier index.phtml
Ce fichier doit être situé dans le dossier application/modules/frontend/views/scripts/index de votre application et doit contenir ces lignes de code :Vous êtes sur mon siteCe fichier représente la vue associée à l’action index (indexAction) dans le controller index (IndexController)
Le fichier error.phtml
Ce fichier doit être situé dans le dossier application/modules/frontend/views/scripts/error de votre application et doit contenir ces lignes de code :An error occurred
<?= $this->message ?>
<? if ('development' == APPLICATION_ENV): ?>;Exception information:
Message: <?= $this->exception->getMessage() ?>Stack trace:
<pre><?= $this->exception->getTraceAsString() ?> </pre>Request Parameters:
<pre><? var_dump($this->request->getParams()) ?> </pre> <? endif ?>
Le fichier layout.phtml
Et enfin il va nous falloir un fichier layout.phtml qui va se trouver dans le dossier application/layouts de votre application.Ce fichier va nous permettre de ne pas répéter la description de notre page HTML (header et footer) tout en pouvant modifier certaines variables dans le HTML du layout. Ici on appelle la méthode layout()->content pour afficher dans notre div container le contenu des vues qui sont appelées.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WatchMyDesk </title> </head> <body> <div id="container"> <?php echo $this->layout()->content ?> </div> </body> </html>
Vérifications
Maintenant il vous suffit d’aller sur la page http://localhost/watchmydesk/ et si vous pouvez voir le message « Vous êtes sur mon site» l’installation est finit et votre application fonctionne.Conclusion
Comme vous avez pu le voir, en quelques minutes nous avons mis en place notre environnement de développement à la main. Nous avons abordé pas mal de notions comme le MVC, les exceptions ainsi que les variables passées à la vue depuis le Controller. Ces notions seront approfondis au cours de la série.Notes
- Vous allez me dire que la phase de mise en route est longue mais ici, le fonctionnement est détaillé. De plus, le Zend Framework possède un composant nommé Zend_Tool qui vous permet de générer tous ces fichiers avec une ligne de commande ! Plaisant non ?
- L’architecture présentée ici est l’architecture que nous obtenons avec le composant Zend_Tool. Je me suis juste permis de détailler un peu plus.