Introduction à PEAR

Introduction à PEAR

Si l’usage de librairies de classes PHP s’est vite répandu, l’ensemble PEAR, qui est pourtant une référence en la matière, est encore trop peu connu. Dès lors qu’ils sont en charge de projets assez importants en PHP, les membres d’Eklesia.net gagneraient beaucoup à connaître PEAR... et s’en servir !

PEAR signifie PHP Extension and Application Repository. C’est tout à la fois une norme de codage, un site web, une documentation, mais aussi et avant tout un ensemble cohérent de classes (des modèles d’objets et de fonctions) PHP.

Pourquoi utiliser des classes ?

Si vous avez ne serait-ce qu’un minimum d’expérience en la matière, il ne vous aura pas échappé que le développement de sites en PHP possède un côté très répétitif. Combien de fois avez-vous ouvert une connexion avec une base de données, effectué une requête, fait des boucles pour récupérer les résultats avec mysql_fetch_array, remis en forme les données pour l’affichage... ? Et tout ce travail, pour des opérations strictement analogues d’une fois sur l’autre, avec une valeur ajoutée de la ligne de code proche de zéro.

Pour ne pas réinventer la roue à chaque fois, et surtout pour aller plus vite dans des développements très classiques, de nombreuses librairies de fonction ont été mises au point, permettant la « réutilisabilité » du code, et surtout une simplification considérable pour le développeur.

L’idée est la suivante : pour les grands usages les plus fréquents, au lieu de devoir réécrire étape par étape l’ensemble du processus, les classes offrent des fonctions plus génériques (« de plus haut niveau ») qui permettent de réaliser en une seule ligne ce qu’on détaillait en cinq, dix ou cinquante lignes auparavant. Et tout cela, en bénéficiant de l’expérience des autres et d’une plus grande qualité développement.

Le choix d’utiliser ou non des classes ne pose en fait plus vraiment de question : il correspond essentiellement au profil du développeur et au type de projet. Pour un développeur très occasionnel, sur un tout petit projet ponctuel, le passage par des classes ne s’impose pas nécessairement. En effet, le temps d’apprentissage de la classe ne serait pas nécessairement justifié par les gains de temps.

En revanche, dès qu’on entre dans une pratique régulière ou qu’on intervient sur des gros projets - qui plus est avec une exigence de qualité élevée - alors l’usage de classes s’impose sans aucune hésitation. Sauf à aimer perdre son temps à réécrire indéfiniment les mêmes bouts de code, sans aucune valeur ajoutée et en multipliant les risques d’erreurs...

Pourquoi choisir PEAR ?

Si la question de l’usage de librairies est claire, le choix des librairies à employer pourrait être plus nuancé. Il existe, dans le monde PHP, une quantité considérable de classes et de librairies de fonctions, couvrant très largement tous les besoins auxquels un développeur peut être confronté un jour ou l’autre. Souvent, on n’a que l’embarras du choix.

Pour chaque besoin pris individuellement, il peut exister des classes plus complètes, plus simples ou plus performantes que PEAR. À titre d’exemple, on peut citer la couche d’abstraction de base de données ADOdb, qui s’avère plus rapide que son équivalent PEAR ::DB.

De plus, pour être sincère, le principal inconvénient de PEAR, après bientôt deux ans d’expérience, est la qualité pour le moins médiocre de sa documentation. S’il existe certes une document technique liée aux packages parfaitement rigoureuse et exhaustive , ce type d’information n’est pas suffisant pour permettre une prise en main par les utilisateurs débutants.

Si la situation s’est considérablement améliorée ces derniers temps, trop de packages n’ont pas encore de documentation "utilisateur" pertinente  ; il faut aller à la pêche aux tutoriels sur le web, et le plus souvent se rabattre sur des sites anglophones.

Et pourtant, malgré cela, une fois franchi le cap quelque peu douloureux de l’immersion, PEAR m’est devenu absolument indispensable, au point de ne même plus envisager sérieusement de me lancer dans un développement en PHP sans m’appuyer sur PEAR. Une fois pris en main, le système est d’une puissance, d’une cohérence et d’une efficacité absolument redoutable. Les gains de temps, une fois consenti l’investissement pour maîtriser les classes, sont considérables.

Trois avantages se sont avérés absolument décisifs :

  • L’ensemble des classes PEAR est homogène. Elles suivent les même règles de codage, on garde une cohérence dans l’écriture, ce qui est très appréciable sur des gros projets où l’on manipule beaucoup de classes en même temps. Cette cohérence facilite également la maîtrise d’une nouvelle classe supplémentaire, quand on en a déjà en main un certain nombre.

  • PEAR propose un gestionnaire de packages assez génial, disponible soit en ligne de commande (typiquement : pour un serveur dédié), soit via une interface web (bien pratique si vous êtes sur un hébergement mutualisé). D’un coup d’œil, on peut voir l’ensemble des packages installés, les retirer ou en ajouter de nouveaux, et surtout voir ceux pour lesquels une mise à jour est disponible.

    Le gestionnaire gère aussi les dépendances, ce qui éviter par exemple d’aboutir à des plantages parce qu’on a installé une classe B sans avoir préalablement installé la classe A qui était nécessaire à B... Tout cela permet de garder très facilement toutes ses classes à jour - ce qui est beaucoup plus dur à faire quand on doit gérer quinze classes indépendantes et qu’il faut aller faire le tour des sites web pour voir si par hasard de nouvelles versions sont livrées. Pour le dire autrement : avant, je ne mettais pas à jour mes classes ; depuis que j’utilise PEAR, oui.

  • L’ensemble des packages proposés par PEAR couvre à peu près tous les besoins auxquels ont peut être confronté dans une vie de développeur PHP. Que ce soit l’interfaçage avec d’une base de données (PEAR ::MDB2), la création de formulaires (PEAR ::QuickForm), la gestion des templates (plusieurs packages sont proposés), voire même la gestion des utilisateurs (PEAR ::LiveUser), ou encore quelques grands webservices... Avec 429 packages, difficile de ne pas trouver la classe qui répond à son besoin.

Un exemple anecdotique, mais qui illustre bien la richesse de PEAR : pour une application comptable, on m’a récemment demandé d’écrire des montants (stockés numériquement dans une base) en toutes lettres. Compliqué ? Avec la classe PEAR ::Numbers_Words, cela se fait très précisément en 3 lignes : une pour appeler la classe ; une pour instancier l’objet ; une pour convertir le nombre.

Cerise sur le gâteau : la classe gère même les spécificités linguistiques belges ou suisses. « 70 » peut ainsi, selon les options, être écrit « soixante-dix » ou « septante » ! C’est pas beau ?

source : http://www.eklesia.net/spip.php?article98

tags :
0

Dites ce que vous pensez, laissez un commentaire !