Depuis 2 semaines, ça y est, la version 5.4 de PHP est disponible en tant que RC2, peu de temps après une RC1. Le site php.net nous l’informe dans ce billet de développement.
Etait-ce réellement nécessaire ? Continuerais-je à programmer à ma sauce comme je faisais toujours avant ? Dois-je tout reprogrammer (Oh ! Seigneur dites non…) Ce sont sûrement des questions que vous vous posez actuellement (toujours ?) auxquelles nous allons tenter de répondre grâce à la nouvelle communiquée.
Les changements, ça donne quoi ?
Plutôt pas mal ! Disons que PHP est remanié assez profondément de lui même. Si vous prenez peur, je vous le pardonnerais ; certaines fonctionnalités sont désormais « interdites » ou supprimées afin de préserver la puissance de PHP et la propreté de vos applications.
» J’ai peur de ne pas tout saisir … »
Je suppose que vous avez déjà utilisé les magic_quote … Oui… eh bien elles vont disparaître.
» Quoi ? Mais comment je vais me protéger des injections SQL moi ?
»
En programmant bien et proprement. Ne m’assassinez pas ! C’est ce que l’équipe Zend vous répondra ! D’ailleurs, en parlant d’eux, ils ont effectué une optimisation dans les performances du Zend_Engine, leur bijou (et celui du coeur de PHP).
Malgré cette volonté de rendre plus propre, on remarquera un côté plutôt sale (bien qu’utile) : il s’agit de l’utilisation d’une méthode au sein de la déclaration d’une classe, comme ci-dessous :
Code PHP :
( new MyClass )->maMethode();
Je trouve ceci vraiment affreux mais bon, je ne fais pas partie de l’équipe de développement
Devrons-nous obligatoirement utiliser le Zend Framework ? Nous espérons que non, malgré sa puissance. Il s’agit en effet d’un environnement plutôt énorme mais complexe vous permettant de tout faire (je n’exagère rien). Cela paraîtrait néanmoins despotique de la part de Zend de forcer le téléchargement de ce dernier par la nouvelle version. En effet, un serveur Web mini nous est également annoncé. S’ils prévoient Zend Server, alors oui, leur Framework risque d’être de la partie.
De plus, il nous sera désormais notifié lors de la conversion d’un tableau de valeurs (associatif ou non) à une chaîne de caractères. Par quelle méthode, nous n’en savons encore pas grand chose. Sans doute une Notice en haut de page :]
Oh tiens ! En lisant plus bas :
Citation :- Reflection:
. Fixed bug #60357 (__toString() method triggers E_NOTICE « Array to string
conversion »). (Laruence)
Nous dirons également adieu à register_globals() ainsi que register_long_arrays(). Certains diront que c’est un coup de poignard aux développeurs, d’autres que c’est très bien ainsi. Rappelons tout de même que l’équipe Zend avait eu un avis régressif là dessus et que magic_quote – entre autre – n’était, à la base, pas destinée à être supprimée. La conséquence directe de cette suppression est la limitation de vos programmes à PHP 5.3.
Autre ajout majeur au goût des développeurs : l’inclusion des traits ! Bien que présentes par le passé, elles disposeront désormais de leur propre couche dans la documentation PHP.
Les Traits sont utilisés pour simuler le multi-héritage (ce dernier est limité mais possible jusque là en C++ par exemple). Un trait est destiné à réduire certaines limites de l’héritage unique en permettant à un développeur de réutiliser des ensembles de méthodes librement dans plusieurs classes indépendantes qui vivent dans des hiérarchies de classes différentes.
Un assemblage de cette forme est désormais possible :
Code PHP :
class Base {
public function direSalut() {
echo 'Bonjour';
}
}trait DireSalut {
public function direSalut() {
parent::DireSalut();
echo ’Bonjour!’;
}
}class DireBonjour extends Base {
use DireSalut;
}
Notons également des changements quant à nos chères Bases de données ! Ah oui, on nous l’avait promis ! Chose dite, chose due. En effet, l’équipe Zend a prévu de déplacer les extensions DB non maintenues vers PECL et de faire de PDO l’ interface de base de données principal (ce qui impliquerait la mort, disons la dépréciation, de mysql, mysqli, pgsql, sqlite3, oci8 et les dérivées [ il y en a d'autres ? ]). A compter de la version 5.4, l’extension pdo_dblib ne sera plus supportée.
AES a également été rajouté à SQL pour le cryptage des données. Pour plus d’infos, lire par ici
Dans le superflu, voici $_SERVER['REQUEST_TIME']. Cette valeur de la fameuse super-globale retourne un réel (flottant) en microsecondes de la date d’appel à la ressource.
Et là, paf ! Un changement qui mérite de sortir la bouteille de champagne pour l’occasion ! Il s’agit de la mise par défaut de l’UTF-8 comme encodage principal dans le php.ini ! Enfin une bonne nouvelle dans ce cas d’ajouts et de modifications ! Pourrons -nous dire adieu aux sites utilisant toujours à l’heure actuelle l’ISO-8859-1 comme encodage ? Personnellement, je m’en contrefiche, mais pensons auxchinois tout de même … et nos accents !
Pourquoi l’l’ISO-8859-1 est-ce mal ? Parce qu’il est limité
Mis au point par les Américains à la base, cet encodage ne supportait que leurs caractères (pas d’accents, pas de « ç »…). Au fil des versions, l’ISO a compris les caractères latins, néanmoins, pour les pays d’Asie, cela reste bien flou. Ainsi, un chinois ne pourra pas accéder à votre site puisque les caractères mandarins ne sont pas reconnus par l’l’ISO-8859-1. Ce que gère l’UTF-8 et l’UTF-16
Bref, le changelog est long : le voici pour les plus audacieux.
D’autres modifications seront probablement à venir.
Article rédigé par Cr3@_H@l0