LOGICIELS LIBRES ET DEVELOPPEMENT

LOGICIELS LIBRES ET DEVELOPPEMENT

Présentation du Zend Framework

Qu'est ce que le ZendFramework

Le ZendFramework est un Framework haut niveau orienté composants, pour PHP5. Il fonctionne à partir de PHP 5.1.4 et apporte un socle de solutions orienté objet pour les applications webs, des plus simples au plus complexes.



Les fonctionnalités de ZendFramework

Avec à ce jour une cinquantaine de packages, ZendFramework propose un ensemble de composants, permettant entre autre

La connexion et la gestion de bases de données
L'intégration d'un modèle MVC

Un support de l'Ajax au travers de Dojo et d'un composant de création de formulaire
La gestion de l'authentification
La gestion de la session PHP
Et bien plus encore...


Installation

L'installation est très simple étant donné qu'il s'agit de code PHP. Téléchargez l'archive sur http://framework.zend.com/download/latest puis décompressez la et obtenez le dossier "Library".
Ajoutez ce dossier à l'include_path de PHP, et le tour est joué

Pour plus de pratique, nous allons utiliser un script dit d'autoload (celà va nous éviter de multiples appels à "require"), que nous placerons dans auto_prepend_file de php.ini. Celui-ci contiendra les lignes suivantes :

 

Script d'autoload
  1. require_once 'Zend/loader.php';
  2. Zend_Loader::registerAutoload();

Utilisation au travers d'un exemple simple

Nous allons nous connecter à une base Mysql, et selectionner les nom et prénom de la table 'personnes' de la base 'reservations', afin de les afficher avec une pagination.
 

  1. <?php
  2. $params = array('host'=>'localhost', 'username'=>'julien', 'password'=>'anaska', 'dbname'=>'reservations');
  3. $db = Zend_Db::factory('PDO_Mysql', $params);
  4.  
  5. $select = $db->select()->from('personnes', array('nom', 'prenom'));
  6.  
  7. $paginator = Zend_Paginator::factory($select);
  8. $paginator->setCurrentPageNumber((int)$_GET['page']);
  9. $paginator->setItemCountPerPage(2);
  10.  
  11. foreach ($paginator as $item) {
  12.     echo $item['nom'] - $item['prenom'], PHP_EOL;
  13. }

Ce code affiche les résultats deux à deux et réagit à la page actuelle, récupérée avec $_GET['page'].

Il faut bien noter que nous utilisons ici 2 packages, Zend_Db et Zend_Paginator, mais que ceux-ci sont indépendants l'un de l'autre. C'est une des forces de Zend Framework : il ne vous impose rien, mais vous propose des composants relativement génériques. A vous après de savoir les assembler comme il faut ( du moins, comme vous le voulez )

Utilisation au travers d'un autre exemple simple

Identification d'un utilisateur avec une base de données
  1. <?php
  2. $params = array('host'=>'localhost', 'username'=>'julien', 'password'=>'anaska', 'dbname'=>'members');
  3. $db = Zend_Db::factory('PDO_Mysql', $params);
  4.  
  5. $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'login', 'password', 'md5(?)');
  6. $authAdapter->setIdentity($_POST['login']);
  7. $authAdapter->setCredential($_POST['password']);
  8.  
  9. $result = $authAdapter->authenticate();
  10. if ($result->isValid()) {
  11.     echo "Bienvenu {$result->getIdentity()}";
  12. } else {
  13.     switch ($result->getCode()) {
  14.          case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
  15.          case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
  16.             echo "login ou mot de passe incorrect";
  17.         break;
  18.         default:
  19.             echo "Identification impossible";
  20.         break;
  21.     }
  22. }

Ici, nous identifions une personne en fonction des login/pass qu'il nous a envoyé par méthode POST ( typiquement, un formulaire ). Une fois de plus, chaque objet possède sa responsabilité, et le couplage est relativement faible.

Aller plus loin

Evidemment, l'ensemble de ces traitements s'intègre après dans un modèle MVC, que le composant Zend_Controller permet d'utiliser. Le support sous forme de composants du ZF assure un apprentissage souple, en gros, vous utilisez le(s) composant(s) que vous souhaitez, et certains sont très simples d'apprentissage, comme Zend_Log ou Zend_Config, alors qu'ils vous fournissent de grands services concernant votre application.



16/03/2009
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 14 autres membres