Tag cloud
routes productivité CakePHP débogage migration ASP.NET cakefest php Méthode pense-bête twitter logiciel pierre martin motivation loi conception conférences mvc outils java lithium web stage ie6 scrum framework astuce xhtml blog MySQL open source css wordpress filezilla référencement jsf behavior communauté développement web


PHP 5.3 en version RC1
Ceux qui suivent les dernières avancées du langage PHP connaissent les différents débats ayant eu lieu ces derniers temps quant à la syntaxe des namespaces, de la syntaxe tabulaire …
Cette semaine a été annoncée la version RC1 de PHP5.3.0, dont la version finale devrait sortir (selon des « experts ») cet été ou à la rentrée prochaine. Je vous propose de regarder de manière simple et concrète les belles choses que cette version nous amène !
Nous regarderons ainsi les espaces de noms (namespaces), la syntaxe Nowdoc (dans la lignée de Heredoc), le nouveau raccourci pour la syntaxe ternaire, les fonctions anonymes, la résolution statique à la volée … et la déclaration de tableaux ?
L’annonce officielle
Voici tout d’abord la liste officielle des nouveautés avant de se focaliser sur les points essentiels :
… reprenons les principaux points pour voir concrètement ce que donneront nos codes.
Les namespaces
Les namespaces permettent de différencier deux classes, méthodes, constantes ou autres éléments ayant le même nom mais des signification différentes.
Imaginons que je récupère une bibliothèque codée par une autre personne et ayant une classe ‘MaClassePratique’ que j’inclus partout dans mon projet. Désormais, si je souhaite créer une classe ‘MaClassePratique’ dans mon projet, cela sera impossible car il y aura un conflit de noms. Voici l’exemple de code associé :
NOTE aux puristes : en fait l’erreur devrait être levée à la déclaration de la classe personnelle en disant « une classe du même nom existe déjà »
Les espaces de noms (namespaces) permettent de résoudre ce problème en ajoutant un « chemin » (vous verrez que la syntaxe ressemble aux dossiers Windows) encadrant la classe. Ainsi, chaque librairie aura son propre espace de noms afin d’éviter les conflits. Voici le code ci-dessus tel qu’il serait adapté :
Notons au passage qu’il n’est bien entendu pas obligatoire de déclarer des espaces de noms pour toutes vos classes (votre code actuel sera donc compatible, n’ayez pas peur). Pour en savoir plus, visitez la documentation PHP.
La syntaxe Nowdoc
Comme dit dans la documentation :
Cela sert donc à déclarer des chaînes de caractères sur plusieurs lignes sans se soucier des guillemets.
Et désormais nous pouvons faire exactement pareil avec la syntaxe Nowdoc mais les variables ne seront pas interprétées. Il suffit de remplacer » EOT » par » ‘EOT’ » :
Une syntaxe bien pratique à mettre entre toutes les mains … mais je me demande pourquoi ils n’y avaient pas pensé avant.
Une nouvelle syntaxe ternaire
Je sais que beaucoup de gens n’aiment pas cette syntaxe, mais personnellement je trouve que c’est un des trucs les plus pratiques des langages de programmation. Petit rappel de ce que cela donne :
Désormais on peut simplifier cette ligne grâce à l’opérateur « ?: », ce qui donnerait :
… bon d’accord c’est sale, mais assez clair je trouve une fois qu’on a l’hébitude
Par contre d’autres langages (j’avais utilisé ça en C# je crois) fournissent un raccourci pour ceci :
Si vous connaissez l’équivalent en PHP, je suis preneur !
Mais aussi …
… d’autres choses intéressantes qu’il serait inutile de décrire ici car c’est très bien décrit dans la documentation :
N’aurions nous pas la nouvelle syntaxe pour la déclaration des tableaux ?
Il y a eu de (trop) longues discussions sur la mailing list php-internal à ce sujet, où même notre grand gourou Nate Abele s’était exprimé
!
Voici la proposition de nouvelle syntaxe qui me semble vraiment pratique également :
Je ne suis pas arrivé à connaître la décision finale … si vous le savez, vous serie gentils de me la faire parvenir !
Que pensez-vous de toutes ces nouveautés ? Pratique, inutile ?