Un 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/
- Application/
- view/
- application/
- error/
- layout/
- Module.php
- Application/
- public/
- css/
- fonts/
- img/
- js/
- .htaccess
- index.php
- vendor/
- ma-librairie/
- init_autoloader.php
- config/
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 :