IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

La syntaxe du PHP évolue avec la possibilité de déréférencer des tableaux : pour ou contre ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut La syntaxe du PHP évolue avec la possibilité de déréférencer des tableaux : pour ou contre ?
    Quelle évolution de la syntaxe de PHP souhaiteriez-vous ?
    Déréférencement, éviction du « dollar », tableaux sans Array ou une autre ?



    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $func = function() { return array('a', 'b', 'c'); };
    echo $func()[0]; // prints a
    ?>
    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

  2. #2
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    J'ai du mal à voir l'intérêt de cette syntaxe.

  3. #3
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Juste éviter de passer par une variable temporaire.
    taper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $firstChild = $parent->getChildren()[0]
    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $maVariableQuiPollue = $parent->getChildren()[0]
    $firstChild = $maVariableQuiPollue[0];

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Par défaut
    Je trouve que niveau lisibilité c'est pas top moi

  5. #5
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    je demande juste :
    et pourquoi ne pas faire en sorte que la fonction en question accepte un offset en paramètre comme on peut le faire depuis des lustres ?. on aurait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $var = $parent->getChildren(0);
    plus clair à mon sens que de rajoute cette syntaxe, qui supprime une ligne de code, pas forcément inutile puisqu'elle rend le code plus compréhensible.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 56
    Par défaut
    C'est pas tant la visibilité qui m'interpelle, pour ma part, c'est plus le fait que:
    1 - Ce genre de "raccourci" incite au code brouillon
    2 - Une source de bug potentielle

  7. #7
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    Citation Envoyé par odissey Voir le message
    C'est pas tant la visibilité qui m'interpelle, pour ma part, c'est plus le fait que:
    1 - Ce genre de "raccourci" incite au code brouillon
    2 - Une source de bug potentielle
    rien n'oblige à l'utiliser

  8. #8
    Membre confirmé

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Par défaut
    Pour ma part cela semble fort interessant. Ce n'est certe pas une révolution, mais j'aime d'autant mieux cette syntaxe que l'utilisation d'une variable temporaire. Quand on sait qu'une fonction retourne un tableau j'aime bien l'utiliser immédiatement comme tel (comme lorsqu'une fonction retourne un objet).

  9. #9
    Membre actif Avatar de Causa Sui
    Inscrit en
    Mai 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 133
    Par défaut
    Citation Envoyé par odissey Voir le message
    C'est pas tant la visibilité qui m'interpelle, pour ma part, c'est plus le fait que:
    1 - Ce genre de "raccourci" incite au code brouillon
    2 - Une source de bug potentielle
    ... 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).

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut
    La 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 ?

  11. #11
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2006
    Messages : 30
    Par défaut
    Citation Envoyé par X0000 Voir le message
    La 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 ?
    +1

    J'ai programmé en Java et en VB et pour ma part, je trouve que l'obligation de la déclaration des variables est un fondement de la programmation (et une fois l'habitude prise, ce n'est pas si contraignant que cela). de plus, comme c'est dis plus haut, la possibilité d'obliger la déclaration des variables (voir leur initialisation) ne serait pas gênant, puisque facultatif.

    Pour ce qui est de la nouvelle fonctionnalité, pourquoi pas? Moi je ne l'utiliserais pas dans tout les cas car cela va à l'encontre des bonnes pratiques que je me suis fixées, mais si cela plait à d'autre pourquoi pas?

  12. #12
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Je dois avouer que je me suis deja retrouvé plusieurs fois a vouloir utiliser un tel syntaxe sans pouvoir le faire. Content de voir que je ne suis pas le seul ^^

    Cela va nous changer la vie pour certain type de traitement comme les parsers XML ou ce genre de scripts. Apres c'est pas forcement le plus lisible de code, mais utiliser a bon escient je pense pas que cela soit problematique.

  13. #13
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Je pense que c'est surtout plus cohérent niveau langage. Le fait que les expressions chaînées soient possibles sur le résultats de fonction ainsi que les opérations arithmétiques *mais pas* le déférencement me semble illogique d'un point de vue syntaxe.

  14. #14
    Invité de passage
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Par défaut
    Voir ce genre de code ne me choque plus depuis que je lis beaucoup de code JS.

    Par contre, Php est-il en train de devenir le langage javascript coté serveur. Je n'ai pas dit JSP (Java Server Page).

    Mais plutot JsSP (JavaScript Server Page)

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Par défaut
    Citation Envoyé par rafty Voir le message
    Voir ce genre de code ne me choque plus depuis que je lit beaucoup de code JS.

    Par contre, Php est-il en train de devenir le langage javascript coté serveur. Je n'ai pas dit JSP (Java Server Page).

    Mais plutot JsSP (JavaScript Server Page)
    Oui quand on utilise beaucoup JS, justement on se demande pourquoi cette syntaxe s'applique pas encore a PHP !

    Du "JsSP" : pour ma part, ca serait pas une mauvaise chose.
    Mais d'une certaine manière PHP va dans cette direction quand on voit apparaitre les fonctions anonymes, etc...

  16. #16
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Par défaut
    Ce qui me surprend est la comparaison par beaucoup de PHP à javascript et le fait de justifier l'utilisation d'une syntaxe douteuse (niveau robustesse du code) dans PHP par son utilisation courante dans javascript
    Pour moi, javascript est un langage gadget, tant par son utilité concrète que par sa syntaxe et sa structure complètement hors normes de la programmation robuste. Ce qui n'est pas le cas de PHP, au moins au sujet de son utilité (L'utilisation de ces deux langages étant particulièrement répandue dans le développement web), on voit facilement la différence quand on désactive javascript par simple click dans les options du nav, alors que PHP ... il est tout de même utilisé pour traiter des données parfois ultra-sensibles dans la plupart des sites web du monde; et celui-là pour le désactiver ...

  17. #17
    Nouveau membre du Club
    Profil pro
    Gerant
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gerant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut
    C'est une très bonne nouvelle, absolument pas incompatible avec le typage lache de php, au contraire.
    On peut deja utiliser des objets retournés pour limiter la syntaxe des variables temporaires, il ne manquait que les tableaux qui sont extrèmements courants en php!

    Après php est très permissif en général et ce dereferencement pourra voire arriver du code illisible et des clés fixés en dur que je deteste (sauf la 0 a la rigueur).

    Ca ne revolutionnera pas le monde, coder "propre" en php, comme dans tous les langages, demande de la rigueur au programmeur

  18. #18
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Personnellement je trouve cette évolution vraiment pratique... Je pense que dans mon top 10 des évolutions à faire sur php celle ci est en bonne place.

    J'espère que d'autres arriveront bientôt, notamment celle sur la construction de propriétés à la C# ou java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private string _persoProperty = "";
    public string persoProperty
    {
        get { return _persoProperty; }
        set { _persoProperty = value; }
    }
    Vraiment pratique et fonctionnel en c#, j'aimerais beaucoup retrouvé ça en php.

  19. #19
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Par défaut
    Bonjour

    Est-ce que ça veux dire que l'on appel la fonction chaque fois ?

    Genre $parent->getChildren()[0]
    et plus loin $parent->getChildren()[1]

    Ce sera deux appels distinct de la méthode getChildren ?

    Si oui, ce sera pas toujours judicieux de l'utiliser dans un contexte ou il faut beaucoup d'optimisation.

    A voir, mais ça me semble bien pratique dans certain cas de figure !

  20. #20
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Citation Envoyé par graphiks Voir le message
    Bonjour

    Est-ce que ça veux dire que l'on appel la fonction chaque fois ?

    Genre $parent->getChildren()[0]
    et plus loin $parent->getChildren()[1]

    Ce sera deux appels distinct de la méthode getChildren ?
    Bien sûr.
    Citation Envoyé par graphiks Voir le message
    Si oui, ce sera pas toujours judicieux de l'utiliser dans un contexte ou il faut beaucoup d'optimisation.
    A voir, mais ça me semble bien pratique dans certain cas de figure !
    Exact !

Discussions similaires

  1. syntaxe php fonction avec crochets
    Par xstier dans le forum Langage
    Réponses: 1
    Dernier message: 16/11/2010, 00h30
  2. syntaxe php fonction avec crochets
    Par xstier dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2010, 23h32
  3. Réponses: 39
    Dernier message: 11/08/2010, 10h28
  4. [PHP]problème avec strftime()...
    Par sanosuke85 dans le forum Langage
    Réponses: 5
    Dernier message: 26/05/2005, 11h02
  5. Réponses: 2
    Dernier message: 19/08/2004, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo