K

- Base de connaissances

ZEND FRAMEWORK

dimanche 27 janvier 2013, par webmestre

Lire aussi :

Cette article a pour premier objectif de proposer une arborescence d’une application WEB qui intègre le ZEND Framework.

Le deuxième objectif est de démontrer que l’arborescence des fichiers de développement induit par le modèle MVC du ZEND Framework est relativement simple à appréhender et simple à manier (ou remanier) fonction des bonnes pratiques de développement posées par les équipes projets.

Introduction

Le ZEND Framework est un projet PHP gratuit fourni par la société Zend. Les objectifs du projet sont les suivants :

  • Accélérer le développement de sites web
  • Faciliter la maintenance
  • Industrialiser la façon de coder en PHP

Ce framework permet de faciliter et de fiabiliser le développement de sites dynamiques en PHP. Il s’adresse notamment aux entreprises : le risque associé au développement d’un site d’envergure est significativement inférieur avec l’utilisation du Zend Framework de part la mise en place de normes ou de pratiques de développement.

Le projet ZEND Framework offre une séparation MVC...

Qu’est-ce que le modèle MVC
Modèle d’architecture qui cherche à séparer nettement les couches de présentation (UI : User Interface), métier (BLL : Business Logic Layer) et d’accès aux données (DAL : Data Access Layer). Le but étant d’avoir une dépendance minimale entre les différentes couches de l’application ; ainsi les modifications effectuées sur n’importe quelle couche de l’application n’affectent pas les autres couches.
• Modèle – Encapsule le cœur fonctionnel de l’application, le domaine logique.
• Vue – les données sont envoyées, par le modèle, à la vue qui les présente à l’utilisateur.
• Contrôleur – reçoit les données et les transmets au modèle ou à la vue.
Une telle architecture est communément appelée architecture 3-tier ou à 3 niveaux.

Installation

A partir des dépôts
Plusieurs méthodes pour installer ZEND Framework rapidement est par exemple dans de nombreuses distributions Linux d’utiliser les dépôts :
Sous FEDORA :

yum install php-ZendFramework

Sous DEBIAN/UBUNTU :

apt-get install zend-framework

Mais, ce n’est pas notre souhait...

A partir des sources

TGZ - 1.2 Mo
ZF2 (Version 2.0.6)
Sources PHP du ZEND FRAMEWORK

Une autre méthode consiste à utiliser directement les sources, ce qui permet d’avoir à mon sens une meilleure gestion des montées de version du framework.
Et pour ce faire, au moment où cet article est écrit, l’URL permettant de récupérer la dernière version du ZEND Framework 2 est :
https://packages.zendframework.com/releases/ZendFramework-2.0.6/ZendFramework-2.0.6.tgz

En la décompressant, on obtient l’arborescence suivante :

.
├── bin
│   ├── autoload_example.php
│   ├── autoload_examples.php
│   ├── classmap_generator.php
│   ├── createAutoloadTestClasses.php
│   └── pluginmap_generator.php
├── composer.json
├── demos
│   └── Zend
├── library
│   └── Zend
├── LICENSE.txt
├── README.md
├── resources
│   ├── composer.json
│   └── languages
└── vendor
Zip - 283.1 ko
ZEND SKELETON APPLICATION (GITHUB)
Fichier compressé exporté de GITHUB

Seul le répertoire qui nous intéresse est library , il contient les sources du ZEND Framework.

Arborescence des développements : ZendSkeletonApplication

Comme évoqué en introduction, le ZEND Framework implémente le concept MVC ce qui implique que les sources vont être rangés et organisés suivant une arborescence qui est certes paramétrable mais structurante pour le développement MVC. Les développeurs du projet ZEND ont pensés aux jeunes arrivés sur la technologie, et il est fourni sur GITHUB à l’adresse suivante (https://github.com/zendframework/ZendSkeletonApplication) un squelette de base proposant une telle arborescence.

L’arborescence contenu dans l’archive est la suivante :

.
├── composer.json
├── composer.phar
├── config
│   ├── application.config.php
│   └── autoload
├── data
│   └── cache
├── init_autoloader.php
├── LICENSE.txt
├── module
│   └── Application
├── public
│   ├── css
│   ├── images
│   ├── index.php
│   └── js
├── README.md
└── vendor
    ├── README.md
    └── ZF2
BZip - 908.2 ko
MY ZEND SKELETON
Source du ZEND Framework et une application squelette

Création de l’arborescence du site

Comme évoqué en introduction, l’objectif de cet article est de proposer une application de base implémentant le ZEND Framework et bien évidemment l’arborescence proposée par le squelette ne convient pas à nos bonnes pratiques de développement pour différentes raisons (ce qui induit cet article ;)... Sinon nous aurions fait un simple lien vers de très bons tutoriels ZEND).

Les règles posées pour le répertoire Application sont les suivantes :

  • Les sous-répertoires à la racine du répertoire Application commenceront tous par une lettre capitale
  • Les fichiers et répertoires dans le sous-répertoire Public, View et Layout seront tous nommés en lettre minuscule
  • Les sous-répertoires de répertoire Controller répondent aux normes de nommage du ZEND Framework
  • On dissociera toujours une Vue et un layout (= Mise en page dans notre concept de développement)

Arborescence :
Et, voici donc ce que nous proposons comme arborescence, après avoir panaché les deux archives présentées ci-dessus (source de ZEND et source de l’application squelette) et supprimé les fichiers et répertoires inutiles jugés inutiles et ajoutés le squelette ApplicationTest pour nos tests unitaires via PHPUnit :

.
├── config
│   └── application.config.php
├── data
│   └── cache
├── library
│   └── Zend
├── module
│   ├── Application
│   │   ├── Config
│   │   ├── Controller
│   │   ├── Language
│   │   ├── Layout
│   │   ├── View
│   │   └── Module.php
│   └── ApplicationTest
│       ├── Controller
│       ├── Bootstrap.php
│       ├── phpunit.xml.dist
│       └── TestConfig.php.dist
└── public
     ├── css
     ├── images
     ├── index.php
     └── js

VirtualHost proposé :
Nous vous proposons le VirtualHost suivant pour APACHE 2 :

<VirtualHost *:80>
        ServerAdmin postmaster@nystek-editions.com
        #---Parametrage sous-domaine (cf. /etc/hosts)---#
        DocumentRoot /home/www-eclipse/www-my-zendskeleton/public
        ServerName www-myzend.localhost
        <Directory "/home/www-eclipse/www-my-zendskeleton/public">
                DirectoryIndex index.php
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        #---Gestion des erreurs---#
        ErrorLog ${APACHE_LOG_DIR}/error-www-myzend.log
        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        RewriteLog ${APACHE_LOG_DIR}/rewrite-www-myzend.log
        RewriteLogLevel 3
        CustomLog ${APACHE_LOG_DIR}/access-www-myzend.log combined
        #---Gestion des règles---#
        AccessFileName .htaccess
</VirtualHost>

Il est à noter qu’il faut mapper le nom du serveur sur l’IP de votre environnement.
Dans le fichier /etc/hosts , il faut par exemple ajouter à la ligne commençant par 127.0.0.1, www-myzend.localhost.

Une fois fait, dans votre navigateur préféré, tapez l’URL : http://www-myzend.localhost

Important et pré-requis

  • Sous Apache2, il est nécessaire d’activer le module "rewrite" permettant la gestion de réécriture des URLs, et pour ce faire, il suffit de taper la commande suivante :
    sudo a2enmod mod_rewrite

ou

sudo a2enmod rewrite
  • La version de PHP doit être supérieure à la version 5.3.2 sinon le ZEND Framework ne fonctionnera pas correctement (certaines implémentation de classe nécessite une version supérieure à la 5.3.2 de PHP).

Liens utiles

http://dico.developpez.com/html/3020-Conception-MVC-Model-View-Controller.php
http://g-rossolini.developpez.com/tutoriels/php/zend-framework/debuter/?page=introduction#LI-B
http://autonomicpilot.co.uk/blog/Posts/ZSAAndG403Translator.html
http://www.z-f.fr/
http://devblog.x2k.co.uk/unit-testing-a-zend-framework-2-controller/
http://php-underground.blogspot.fr/2012/12/jobeet-zf2-jour-5-le-routage.html

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING