Sortie de PHP5.3RC1
L'équipe de développement de PHP a sorti il y a deux jours la première release candidate de la branche 5.3 du langage PHP.
Pour rappel, le langage PHP est un langage interprété orienté objet (Même si l'OO n'est pas obligatoire) fonctionnant côté serveur, vous permettant ainsi de faire des pages web dynamiques.
Cette version 5.3, attendue depuis longtemps, nous apporte:
- Support des namespaces, ou les espaces de noms en français. Cela vous permet, par exemple, dans le cadre d'un gros développement (ou même petit, peu importe), d'avoir plusieurs classes portant le même nom, et d'éviter les conflits. Attention, même si pendant longtemps les délimiteurs prévus étaient les :: ils ont été remplacés par les antislashs "\"
- Performances améliorées (PHP5 est plus lent que PHP4 et PHP6)
- Late static binding, pour choisir la classe appelée dans le cas d'un héritage avec des méthodes statiques
- Les fonctions Lambdas. Une fonction Lambda ne posséde pas de nom, et est stockée dans une variable. Voici un exemple :
$f = function(){
echo 'Hello world!';
};
$f();
Notez bien le point virgule à la fin de la déclaration de la fonction, il est obligatoire.
Si certes create_function() pouvait faire cela, dans le cadre d'une fonction assez longe, il est préférable de faire une fonction Lambda.
- Syntaxe Nowdoc, afin de contenir plusieurs lignes de chaînes de caractères qui ne seront jamais analysées par le moteur PHP.
$exemple = <<<'EOD'
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse odio. Proin hendrerit, nisi eu cursus congue, mi nibh aliquet lectus, ut accumsan leo purus at massa. Morbi condimentum, turpis eu imperdiet commodo, leo libero fringilla neque, non placerat odio lacus sed risus. Praesent tempor congue eros. Vestibulum cursus laoreet nunc. Curabitur blandit. Aenean eros urna, fermentum eget, varius vel, rhoncus eget, mauris. Nunc fringilla nisl porttitor elit. Nulla laoreet pulvinar tellus. Integer est sapien, semper eget, convallis a, consectetur ac, nulla. Sed at neque. Proin iaculis blandit odio. Integer in elit. Vestibulum fermentum.
EOD;
- Modification dans les opérateurs ternaires. Peut être faites vous partie des rares à faire des fonctions de la forme
ACTION ? RESULTAT SI VRAI : RESULTAT SI FAUX
Et bien maintenant la partie RESULTAT SI VRAI peut ne pas être écrite, et on se retrouve avec:
ACTION ?: RESULTAT SI FAUX
Je ne vois pas trop l'intérêt, ça risque de donner du grain à moudre à toutes les personnes disant que PHP est un langage crâde (je ne peux pas leur donner complêtement tort non plus).
- Possibilité d'écrire dans une classe une méthode __callStatic(). L'intérêt est le même que pour la méthode __call(), qui est appelée lors de l'appel à une méthode non déclarée dans une classe. __callStatic joue le même rôle mais pour les méthodes statiques. Attention, ceci vous coûtera cher en termes de performances, n'utilisez __callStatic (et toutes les méthodes magiques d'ailleurs) seulement si vous n'avez pas d'autre choix.
- Possibilité de gérer le Garbage Collector, c'est à dire le récupérateur de mémoire, ou "ramasse-miettes"
- Le pilote natif de mysql (libmysql) a été remplacé par mysqlnd. Ca ne change rien pour les développeurs.
- Meilleur support des plates-formes windows.
- Meilleure gestion des calculs sur les nombres flottants
- Nouveau niveau d'erreur : E_DEPRECATED
- Modification de la structure du php.ini (j'y reviendrais plus tard dans un autre article).
- De nouvelles extensions arrivent : phar, intl, fileinfo, sqlite3, enchant (j'essayerai de couvrir tout cela dans d'autres articles).
- Résolution de bugs divers, dont dans l'extension pour openssl, spl et date. Il est à noter que le bug n'était pas du tout présent dans openssl en lui même.
Il y a aussi quelques suppressions/modifications:
- Les extensions mhash, msql, pspell, sybase sont supprimées
- Les extensions ming, fbsql, ncurses, fdf sont désormais disponibles dans PECL
- Le mode zend.ze1_compatibility_mode a été supprimé.
Ce qui laisse présager encore 2RC avant la sortie finale, qui devrait arriver d'ici un mois ou deux je pense.
Compilez, programmez, amusez-vous bien!
Pour rappel, le langage PHP est un langage interprété orienté objet (Même si l'OO n'est pas obligatoire) fonctionnant côté serveur, vous permettant ainsi de faire des pages web dynamiques.
Cette version 5.3, attendue depuis longtemps, nous apporte:
- Support des namespaces, ou les espaces de noms en français. Cela vous permet, par exemple, dans le cadre d'un gros développement (ou même petit, peu importe), d'avoir plusieurs classes portant le même nom, et d'éviter les conflits. Attention, même si pendant longtemps les délimiteurs prévus étaient les :: ils ont été remplacés par les antislashs "\"
- Performances améliorées (PHP5 est plus lent que PHP4 et PHP6)
- Late static binding, pour choisir la classe appelée dans le cas d'un héritage avec des méthodes statiques
- Les fonctions Lambdas. Une fonction Lambda ne posséde pas de nom, et est stockée dans une variable. Voici un exemple :
$f = function(){
echo 'Hello world!';
};
$f();
Notez bien le point virgule à la fin de la déclaration de la fonction, il est obligatoire.
Si certes create_function() pouvait faire cela, dans le cadre d'une fonction assez longe, il est préférable de faire une fonction Lambda.
- Syntaxe Nowdoc, afin de contenir plusieurs lignes de chaînes de caractères qui ne seront jamais analysées par le moteur PHP.
$exemple = <<<'EOD'
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse odio. Proin hendrerit, nisi eu cursus congue, mi nibh aliquet lectus, ut accumsan leo purus at massa. Morbi condimentum, turpis eu imperdiet commodo, leo libero fringilla neque, non placerat odio lacus sed risus. Praesent tempor congue eros. Vestibulum cursus laoreet nunc. Curabitur blandit. Aenean eros urna, fermentum eget, varius vel, rhoncus eget, mauris. Nunc fringilla nisl porttitor elit. Nulla laoreet pulvinar tellus. Integer est sapien, semper eget, convallis a, consectetur ac, nulla. Sed at neque. Proin iaculis blandit odio. Integer in elit. Vestibulum fermentum.
EOD;
- Modification dans les opérateurs ternaires. Peut être faites vous partie des rares à faire des fonctions de la forme
ACTION ? RESULTAT SI VRAI : RESULTAT SI FAUX
Et bien maintenant la partie RESULTAT SI VRAI peut ne pas être écrite, et on se retrouve avec:
ACTION ?: RESULTAT SI FAUX
Je ne vois pas trop l'intérêt, ça risque de donner du grain à moudre à toutes les personnes disant que PHP est un langage crâde (je ne peux pas leur donner complêtement tort non plus).
- Possibilité d'écrire dans une classe une méthode __callStatic(). L'intérêt est le même que pour la méthode __call(), qui est appelée lors de l'appel à une méthode non déclarée dans une classe. __callStatic joue le même rôle mais pour les méthodes statiques. Attention, ceci vous coûtera cher en termes de performances, n'utilisez __callStatic (et toutes les méthodes magiques d'ailleurs) seulement si vous n'avez pas d'autre choix.
- Possibilité de gérer le Garbage Collector, c'est à dire le récupérateur de mémoire, ou "ramasse-miettes"
- Le pilote natif de mysql (libmysql) a été remplacé par mysqlnd. Ca ne change rien pour les développeurs.
- Meilleur support des plates-formes windows.
- Meilleure gestion des calculs sur les nombres flottants
- Nouveau niveau d'erreur : E_DEPRECATED
- Modification de la structure du php.ini (j'y reviendrais plus tard dans un autre article).
- De nouvelles extensions arrivent : phar, intl, fileinfo, sqlite3, enchant (j'essayerai de couvrir tout cela dans d'autres articles).
- Résolution de bugs divers, dont dans l'extension pour openssl, spl et date. Il est à noter que le bug n'était pas du tout présent dans openssl en lui même.
Il y a aussi quelques suppressions/modifications:
- Les extensions mhash, msql, pspell, sybase sont supprimées
- Les extensions ming, fbsql, ncurses, fdf sont désormais disponibles dans PECL
- Le mode zend.ze1_compatibility_mode a été supprimé.
Ce qui laisse présager encore 2RC avant la sortie finale, qui devrait arriver d'ici un mois ou deux je pense.
Compilez, programmez, amusez-vous bien!
Publicité