La syntaxe PHP va évoluer avec la possibilité de déréférencer des tableaux
Pour ou contre ? Et quelle autre évolution souhaiteriez-vous ?
Le 2010-08-10 15:09:52, par Idelways, Expert éminent sénior
PHP offre un large panel de possibilités mais sa syntaxe est relativement rigide et (pour certains) « verbeuse » comparée aux autres langages dynamiques concurrents.
Johannes Schlüter travaille sur MySQL à Oracle/Sun et fait partie de la core-team (l'équipe de développement) de PHP. Il vient de présenter sur son blog une nouveauté qui sera intégrée aux versions futures du langage (5.4 ou 6, il ne précise pas).
Il s'agit de la possibilité de déréférencer des tableaux. Comme parfois un bout de code peut en dire plus qu'un long discours, il sera possible de faire :
Alors qu'avant, la déclaration d'une $variable intermédiaire était obligatoire, cette nouveautés permettra plus de flexibilité lors de la programmation objet en PHP.
L'annonce de cette fonctionnalité soulève à la fois enthousiasme et critiques dans la communauté qui semble extrêmement partagée sur cette évolution.
Votre avis nous intéresse donc sur cette question : êtes-vous pour ou contre.
Et plus généralement, quelles sont les possibilités que vous souhaiteriez voir apparaitre dans les prochaines versions de PHP ?
Sources : Blog de Johannes Schlüter
Lire aussi :
Quelle est la solution PHP la plus obscure que vous ayez utilisée ? Scripts, CMS maisons ou langages "PHP-Killer" ?
Avez-vous inventé des termes que seuls vous et votre équipe comprenez ? Drôles ou techniques, expliquez-les nous
Les rubriques (actu, forums, tutos) de Développez :
PHP
Développement WEB
Langages
Johannes Schlüter travaille sur MySQL à Oracle/Sun et fait partie de la core-team (l'équipe de développement) de PHP. Il vient de présenter sur son blog une nouveauté qui sera intégrée aux versions futures du langage (5.4 ou 6, il ne précise pas).
Il s'agit de la possibilité de déréférencer des tableaux. Comme parfois un bout de code peut en dire plus qu'un long discours, il sera possible de faire :
Code : |
1 2 3 4 5 | <?php $func = function() { return array('a', 'b', 'c'); }; echo $func()[0]; // prints a ?> |
L'annonce de cette fonctionnalité soulève à la fois enthousiasme et critiques dans la communauté qui semble extrêmement partagée sur cette évolution.
Votre avis nous intéresse donc sur cette question : êtes-vous pour ou contre.
Et plus généralement, quelles sont les possibilités que vous souhaiteriez voir apparaitre dans les prochaines versions de PHP ?
Sources : Blog de Johannes Schlüter
Lire aussi :
Les rubriques (actu, forums, tutos) de Développez :
-
JcpanMembre confirméle 10/08/2010 à 16:01
-
tfabienMembre à l'essaiJuste que la fonction n'a pas intérêt à retourner "null" ...
il est d'usage de tester le retour des fonctions avant de l'utiliser...et pour cela on a besoin d'une variable temporaire si on ne veut pas invoquer la fonction deux fois
En somme:
Code : $firstChild = $parent->getChildren()[0]
Code : 1
2
3
4$children = $parent->getChildren(); if ($children != null) $firstChild = $children[0];
Cela dit PHP a toujours été un langage permissif et c'est une de ses forces, dans le cadre d'un développement "script" ou on est "quasi-certain" du retour, cela reste acceptable, mais il est comme toujours necessaire de comprendre le probleme éventuel que peut poser cette confiance aveuglele 10/08/2010 à 16:25 -
revlisMembre du ClubToutes ces syntaxes existent déjà et je suis sur que nos projets ont au moins une de chaque sur différents éléments...
Code : 1
2
3
4
5
6
7
8$config['database']['passsword']; $config->database->passsword; $config->database()->passsword(); $config['database']->passsword; $config['database']->passsword(); $config->database['passsword']; $config->database->passsword(); $config->database()->passsword;
Code : $config->database()['password'];
le 12/08/2010 à 8:33 -
_skipExpert éminentJuste éviter de passer par une variable temporaire.
taperCode : $firstChild = $parent->getChildren()[0]
Code : 1
2$maVariableQuiPollue = $parent->getChildren()[0] $firstChild = $maVariableQuiPollue[0];
le 10/08/2010 à 15:40 -
X0000Membre à l'essaiLa question étant :
Quelle évolution de la syntaxe de PHP souhaiteriez-vous ?
Perso je trouve le PHP trop permissif (surtout venant de C++).
Pourquoi pas faire comme en VB une option imposant la déclaration des variables avant toute utilisation, évitant le bug classique d'erreur de frappe du genre Mavariable et MaVariable.
Imposer le typage de variable lors de sa déclaration ... un des fondement en programmation non ?le 10/08/2010 à 20:05 -
McBennyNouveau membre du ClubJe n'ai pas d'avis particulier sur cette proposition précise mais pour élargir le débat, comme proposé initialement, j'aimerais beaucoup que les fonctions de PHP soit "standardisées" tant en terme de nom qu'en terme d'ordre des paramètres.
Nom des fonctions avec et sans "_" :
Pourquoi a-t'on : strpos, strtolower, strlen... et str_replace, str_shuffle, str_split ?
Pourquoi a-t'on : filesize, filetype, filemtime... et file_exists, file_get_contents et file_put_contents ?
Je trouve ça stupide à l'utilisation.
Ordre des paramètres :
Le nombre de paramètre des fonctions n'est pas toujours le même, certes, mais il y a un élément récurrent presque à chaque fois, c'est l'objet sur lequel on applique la fonction, pourquoi n'est-il pas toujours à la même place ?
str_replace($search, $replace, $variable)
str_pos($variable, $debut, $fin)
On ne me fera pas croire que cette différence a un intérêt dans le langage... Par contre je veux bien croire que changer cela risque d'être extrêmement délicat... sauf à créer de nouveaux alias dans une nouvelle version du langage peut-être, à déprécier les anciens noms de fonction puis à les faire disparaître dans une version ultérieure.le 12/08/2010 à 21:17 -
ThomasRMembre expertCe n'est pas une nouvelle fonction.
Tous les contributeurs de PHP ne travaillent pas tous sur la même chose, je me réjouis qu'en parallèle d'implémentations comme l'Unicode certains travaillent sur d'autres améliorations celle dont il est question ici.le 24/08/2010 à 13:29 -
Causa SuiMembre actif... accessoirement aussi moins de code à taper, la possibilité d’une optimisation en interne (suppression d’une référence).
J'ai encore râlé il n'y a pas une heure parce que ça n'existait pas*; et qui plus est, cette syntaxe est tout à fait logique et courante (notamment en Ruby ou en Javascript pour ne citer qu’eux).le 10/08/2010 à 16:07 -
spidermarioMembre éprouvéJe me permets de citer un commentaire sur le lien de reddit.com :
I always wondered what PHP's parser must look like if it doesn't automatically support this
Je me suis toujours demandé à quoi doit ressembler le parser de PHP, s’il ne gère pas automatiquement cela.le 10/08/2010 à 16:17 -
lyrixNouveau membre du ClubJe ne vois pas du tout pourquoi trouver cette méthode "brouillon". Je la trouve très pratique et l'attends avec impatience.le 10/08/2010 à 16:22