Introduction

Les Zeta Components  sont des bibliothèques PHP sous licence libre. Anciennement "eZ Components" et diffusées sous licence  New BSD elles seront dorénavant diffusées sous licence Apache License, Version 2.0 mais ne sont encore disponibles en téléchargement que sous l'ancienne appellation.

Celles-ci sont toutefois particulièrement bien conçues déjà, et suivent des patrons de conception bien connus des architectes logiciels ce qui les rend très faciles à réutiliser et à étendre.

Je propose de commencer aujourd'hui avec l'installation de ces bibliothèques et leur utilisation dans un projet PHP dans un environnement Linux et plus particulièrement pour une distribution Debian.

La marche à suivre devrait différer que très peu de celle des autres distributions Linux ou Unix. Quand à l'environnement Windows... Eh bien je ne considère pas ce système comme un environnement de développement à vrai dire...

Les pré-requis

Il vous faudra déjà PHP 5.2.1 au minimum si vous comptez utiliser les eZ Components. Et PEAR si vous souhaitez une installation et une mise à jour facile. Les quelques extensions nécessaires étant intégrées de base dans PHP, il ne sera pas nécessaire d'installer autre chose.

Ce qui nous fait sous Debian* :

# aptitude install php5 php-pear

Si vous êtes sur un hébergeur mutualisé et que vous ne pouvez pas installer PEAR, ne vous inquiétez pas ce n'est pas nécessaire.

Installation

...avec PEAR

Si vous venez d'installer PEAR, vous devrez peut-être faire une mise à jour:

# pear upgrade-all

Ensuite, il vous suffit d'ajouter le "channel" eZ Components ( l'ASF ne proposant pas encore de dépôt) puis de demander à PEAR d'installer tout ce qu'il faut :

# pear channel-discover components.ez.no
# pear install -a ezc/eZComponents

Voilà... Toutes les librairies PHP seront téléchargées automatiquement et entreposées dans /usr/share/php/ezc.

Tout l'intérêt de PEAR, hormis l'installation automatisée est qu'il suffit d'une commande pour mettre à jour les bibliothèques :

# pear upgrade ezc/eZComponent

... avec l'archive

Si vous n'avez pas la possibilité d'utiliser PEAR, vous pouvez toujours vous rendre sur la page de téléchargement des eZ Components. Je vous conseille de télécharger la version light. La version full contenant beaucoup de fichiers inutiles si vous ne comptez pas toucher aux code des bibliothèques en elles-mêmes..

Décompressez l'archive dans un dossier ( ezc par exemple ) et placez-le dans le dossier dans lequel vous comptez stocker les bibliothèques utiles à vôtre projet ( nous dirons 'lib' ce qui nous donne au final: <racine_du_projet>/lib/ezc )

Utilisation

...la version courte

Pour rendre disponible l'intégralité des classes offertes par les eZ Components, ils vous suffit d'inclure le fichier ezc_bootstrap.php au début de vos scripts.

Si vous avez installé les bibliothèques à l'aide de PEAR cela donnera :

<?php
require 'ezc/Base/ezc_bootstrap.php';
...
?>

Et si vous avez utilisé l'archive et que nous sommes par exemple dans le fichier <racine_du_projet>/www/index.php :

<?php
require '../lib/ezc/Base/src/ezc_bootstrap.php';
...
?>

ou bien

<?php
set_include_path( "<racine_du_projet>/lib/ezc/" . PATH_SEPARATOR .  get_include_path());
require 'Base/src/ezc_bootstrap.php';
?>

...la version un tout petit peu moins courte

Le script ezc_bootstrap.php ne fait en réalité qu'importer la classe ezcBase et redéfinir la fonction d'auto-chargement (autoload) de PHP5 pour que ce mécanisme soit délégué à ezcBase::autoload().

Vous pouvez donc arriver au même résultat en faisant votre propre fichier bootstrap.php contenant le code suivant si installation par PEAR :

<?php
require_once "Base/base.php";
function __autoload( $className )
{
        ezcBase::autoload( $className );
}
...
?>

ou si installation via l'archive:

<?php
require_once "<racine_du_projet>/lib/ezc/"Base/base.php";
function __autoload( $className )
{
        ezcBase::autoload( $className );
}
...
?>

Cela peut vous permettre accessoirement de paramétrer plus finement le système de gestion de chargement des classes.

Une alternative possible est d'utiliser la fonction spl_autoload_register au lieu de redéfinir __autoload() :

<?php
require_once "<racine_du_projet>/lib/ezc/Base/base.php";
spl_autoload_register( array( 'ezcBase', 'autoload' ) );
...
?>

Test

Vous voulez savoir si l'installation s'est bien déroulée? Rien de plus simple :

<?php
...
echo ezcSystemInfo::getInstance()->cpuType."\n";
?>

Si tout va bien, vous devriez voir s'afficher le type de votre processeur.

Par exemple :

Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz

Dans le cas contraire vous devriez obtenir une belle erreur PHP:

PHP Fatal error:  Class 'ezcSystemInfo' not found

Conclusion

Vous voilà donc avec des eZ Components prêts à l'emploi. Toutes les classes de la bibliothèque sont désormais instanciables à volonté partout dans votre application. Le passage futur aux Zeta Components ne devrait pas changer grand chose à la démarche.

(*): L'invite sous forme de dièse (#) sous-entend que vous devez être administrateur pour effectuer la commande.