PECL
Pour ceux qui ne le connaissent pas, PECL (PHP Extension Community Library) est un dépôt d’extensions pour PHP. Différemment à PEAR, les extensions qui y sont présentes sont écrites en C (et non en PHP). Certaines de ces extensions sont incluses par défaut dans la distribution de PHP. D’autres, pour les besoins plus spécifiques, doivent êtres téléchargées à partir du dépôt. Le but du PHP Group est d’offrir par défaut dans PHP6 toutes les extensions utiles à une utilisation normale sans trop alourdir la distribution. Voilà pourquoi certains choix ont étés faits pour PHP6 de ce coté. Voici les choix les plus significatifs.
Intégration de XMLReader et XMLWriter
XMLReader est un parser XML simple d’utilisation (basé sur SAX). XMLWriter, quant à lui, est une API permettant de créer simplement, et efficacement, des documents XML. Jusque là, ces deux extensions n’étaient pas incluses par défaut dans la distribution de PHP. Cependant, il est indéniable que depuis quelques années le format XML est au centre des développements Web. Voilà pourquoi le PHP Group a décidé d’inclure ces deux extensions dans PHP6. Ceci devrait largement simplifier la manipulation de fichiers XML avec PHP.
Suppression des bases de données non-PDO
Avec PHP 5.1, une nouvelle extension a été intégrée par défaut. Il s’agit de PDO (« PHP Data Objects »). PDO est une couche d’abstraction au niveau de l’accès aux données. Pour faire simple, avec PDO on peut se connecter à une source de données, y récupérer des informations et effectuer des modifications sans ce soucier de son type. Ainsi, si vous développez une application qui devra fonctionner avec une base de données Oracle sur telle implantation et MySQL sur une autre, cela ne changera rien pour vous: les méthodes seront les mêmes. Voici un exemple de l’utilisation de PDO:
Admettons que l’on veuille faire exactement la même chose, mais sur une base Oracle, il n’y a qu’une ligne à changer:
try { // On ouvre la connexion $dbh = new PDO('mysql:host=labo-web.com;dbname=php6test', $user, $pass); // On fait la requête foreach ($dbh->query('SELECT * from matable') as $row) { // On affiche la ligne en cours print_r($row); } // On ferme la connexion $dbh = null; } catch (PDOException $e) // Gestion des erreurs { print "Erreur ! : " . $e->getMessage() . " "; } ?> |
$dbh = new PDO(« OCI:host=labo-web.com;dbname=php6test », $user, $pass);
C’est donc l’idéal pour développer une application portable vis-à-vis du type de la source de données. Pour le moment, les sources de données supportées sont MySQL 3.x/4.x/5.x, SQLite 2/3, PostgreSQL, Oracle, Microsoft SQL Server, Sybase, Firebird/Interbase 6, IBM DB2 et ODBC v3. Bref, il y a vraiment tout ce qu’il faut.
Voilà pourquoi le PHP Group a décidé de supprimer de la distribution PHP6 les librairies d’accès aux bases de données non-PDO. Clairement il sera impossible, par défaut, d’utiliser les fonctions en mysql_* (ici, c’est l’exemple pour MySQL, mais il en est de même pour les autres types de bases de données). L’accès à ces fonctions pourra être restauré par l’installation des extensions PECL correspondantes.
Intégration d’APC
APC (« Alternative PHP Cache ») est système de cache du code intermédiaire. En fait, il va intercepter le code PHP avant que celui-ci ne soit compilé puis stocke le résultat en mémoire. Ainsi, quand un même objet ou une même page est appelée plusieurs fois, elle ne sera pas re-compilée. C’est le résultat en mémoire qui sera envoyé au client. Le gain en terme de performance est significatif. En effet, APC est une solution qui fait partie des plus performantes. On remarquera tout de même une augmentation indéniable de la consommation de mémoire.
Actuellement APC n’est pas intégré à PHP5. Pour palier les baises de performance de PHP5 et PHP6 (dues à l’avancement dans l’utilisation de la POO et au support d’Unicode), le PHP Group a décidé d’inclure APC dans la distribution de PHP6.
Intégration de File Info et suppression de Mime Magic
Quand on souhaite récupérer des données binaires avec PHP, il est quasiment obligatoire de déterminer à quel type de données on a affaire. S’agit-il d’une image, d’un fichier texte, d’un MP3, … ? De même, si c’est un fichier texte, quel est son encodage ? Pour réponde à ces questions, il faut regarder certaines séquences d’octets à des positions spécifiques à l’intérieur du fichier à analyser.
Actuellement pour faire ce travail PHP, propose par défaut mime magic. Seulement, cette méthode est très loin d’être infaillible. A coté de cela, on trouve une extension PECL qui obtient des résultats nettement plus convaincants: file info. Bien que la détermination du type MIME ne puisse pas être totalement infaillible, file info se trompe rarement.
Ainsi, le PHP Group a décidé d’intégrer file info directement dans la distribution de PHP6. mime magic, quant à lui, sera externalisé dans les dépôts PECL.

Hello ! Billet très pertient
cependant j’ai du mal à comprendrr : ‘register_globals a off dans le php.ini’ … bone continuation !
hello ! »register_globals a off dans le php.ini »
précision indispensable ? les parenthèses e disent parfois davantage que tout le rester
merci pour ce billet intéressant, aubplaisir de vous lrie !