ZF2 : introduction

Logo ZF2Un projet ZF2 est différent d’un projet ZF1. Parmis ces différences il y a l’utilisation des namespace, des modules plus poussés, des event manager et service locator.
Nous allons voir ici le changement dans l’organisation des fichiers, pour cela on peut télécharger le squelette d’une application ZF2 sur GitHub.

 

Démarrage du projet ZF2

Voici l’arborescence d’un projet Zend Framework 2.

  • mon-projet/
    • config/
      • autoload/
      • application.config.php
    • data/
      • cache/
      • logs/
      • sessions/
    • module/
      • Application/
        • config/
        • src/
          • Application/
            • Controller/
            • Model/
            • Service/
        • view/
          • application/
          • error/
          • layout/
        • Module.php
    • public/
      • css/
      • fonts/
      • img/
      • js/
      • .htaccess
      • index.php
    • vendor/
      • ma-librairie/
    • init_autoloader.php

Dans le fichier config/application.config.php, on trouve la configuration générale, la liste des modules utilisés, la gestion du cache etc.
Le dossier config/autoload/ et ses fichiers global.php et local.php permettent de surcharger la configuration générale (connexion à la base de donnée, service manager) en fonction de l’environnement de travail (production, développement).

Le dossier data/ contient les données qui sont habituellement écrites par une application : fichiers de cache, de logs, et de sessions.

Dans le dossier module/, on retrouve chaque module avec sa propre arborescence.
Le fichier module/Application/Module.php est un peu le fichier Bootstrap de ZF1.
Il charge notamment le fichier module/Application/config/module.config.php qui est la configuration propre au module : controllers, views, routes etc.
Le dossier module/Application/src/Application/ contient les controllers, models et services.
Dans module/Application/views/ on retrouve nos templates au format .phtml.

L’application web pointe sur le dossier public/, qui contient le controller frontal index.php et les ressources css/fonts/img/js.

Puis vient les librairies tierces, à déposer dans le dossier vendor/.

Enfin, à la racine du projet on trouve le fichier init_autoloader.php, il va nous permettre entre autre de charger nos librairies, exemple ci-dessous.

Charger ses librairies

Dans le fichier init_autoloader.php à la racine de votre projet, il est possible d’ajouter ses librairies, fonctionnant avec les namespace ou avec la notation “My_Awesome_Class” pour les classes plus anciennes.

ZendLoaderAutoloaderFactory::factory(array(
    'ZendLoaderStandardAutoloader' => array(
        'autoregister_zf' => true,
        'namespaces' => array(
            'Loutre' => __DIR__ . '/vendor/Loutre'
        ),
        'prefixes' => array(
            'Util' => __DIR__ . '/vendor/Util'
        ),
    )
));

Pour appeler une classe de mon dossier Util, je procède comme ceci :

$date = new \Util_Date();

Pour accéder aux classes de ma librairie “Loutre”, j’écris mon code de cette manière :

use Loutre\UploadedFile;

class ImageController extends AbstractActionController
{
    public function indexAction()
    {
        $file = new UploadedFile($_FILES['image']);
    }
}

J’aurai au préalable indiqué le namespace dans ma classe UploadedFile

namespace Loutre;

class UploadedFile 
{
    ...
}

Blogs intéressants

Voici une liste de blogs de développeurs PHP qui publient régulièrement des articles sur l’utilisation de ZF2 :

Share Button

Laisser un commentaire.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.