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

  1. #81
    Membre régulier
    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
    Points : 93
    Points
    93
    Par défaut
    Ce que je trouve bien c'est que cet apport syntaxique arrive enfin.
    Ce que je déplore, c'est qu'il reste tant de choses a implémenter dans PHP.
    Quand je vois qu'on s'extasie sur le support Unicode (hypothétique), les fonctions anonymes, les espaces de noms, le chaine de constructeur (new Machine()->getVar())...
    alors que les autres langage le proposent déjà depuis des années,
    et qu'en face PHP6, qui est censé promettre tout ca, a été retardé/suspendu :
    Ca me fait vraiment penser a cette pub d'Apple qui vante l'ajout de la fonction copier/coller dans l'iPhone... Punaise le copier/coller quoi...

  2. #82
    Membre régulier
    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
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Hello,
    c’est vrai que c’est marrant de voir tout le tollé que génère une simple homogénéisation de la syntaxe…
    bien harmoniser/homogénéiser la lib standard ca serait pas un luxe.

    et pourquoi pas aussi
    - virer les vieilles lib pocédurales qui ont migré en objet, comme la classe DOMDocument.,
    - encapsuler la lib cURL dans une classe.
    etc...

    Citation Envoyé par Watilin Voir le message
    Je me fais un peu l’avocat du diable en disant ça, mais pour moi qui aime énormément JavaScript, le fait que PHP s’en rapproche ne peut être qu’une bonne chose !
    je plussoie a fond.

    Citation Envoyé par Watilin Voir le message
    Après, il est vrai que quand on conçoit un langage, on a un objectif. Selon moi, un bon langage est un langage qui a réussi à se tenir à ses objectifs, ses idiomes, en mûrissant. De ce point de vue, PHP n’est peut-être pas un bon langage… Mais je l’aime bien quand même
    ca fait pas mal de temps, depuis les début de PHP5 en fait, que les objectifs de PHP tendent a diverger. Ya ceux qui veulent qu eca reste du procédural, d'autres qui veulent du objet simple, et ceux qui veulent que PHP s'oriente nettement vers du Java/.Net-like (je fais partie de ceux la)

  3. #83
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : septembre 2006
    Messages : 519
    Points : 1 052
    Points
    1 052
    Par défaut
    Citation Envoyé par elderion Voir le message
    Ce que je déplore, c'est qu'il reste tant de choses a implémenter dans PHP.
    Quand je vois qu'on s'extasie sur le support Unicode (hypothétique), les fonctions anonymes, les espaces de noms, le chaine de constructeur (new Machine()->getVar())...
    alors que les autres langage le proposent déjà depuis des années,
    et qu'en face PHP6, qui est censé promettre tout ca, a été retardé/suspendu :
    Fonctions anonymes et espaces de noms sont disponibles depuis PHP 5.3.

  4. #84
    Nouveau membre du Club
    Inscrit en
    mars 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Beau problème !
    Je vous soutiens pour votre recherche de réponse

  5. #85
    Membre régulier
    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
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par spidermario Voir le message
    Fonctions anonymes et espaces de noms sont disponibles depuis PHP 5.3.
    En effet mais je parle là d'éléments au sens symbolique.
    C'est pour dire que l'évolution du langage est quand même très lente.

  6. #86
    Nouveau membre du Club
    Homme Profil pro
    Épine dans le pieds
    Inscrit en
    mai 2004
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Épine dans le pieds

    Informations forums :
    Inscription : mai 2004
    Messages : 425
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Galak` Voir le message
    Et bien empty ne génère pas plus de notice que isset si une variable n'est pas définie, donc le isset est inutile. C'est un peu comme faire un if ($var != 0 && $var == 1).
    J'ai compris ! Merci

    Citation Envoyé par Galak` Voir le message
    Ca fait plusieurs personnes qui parlent de "foreach(func() as $key => $val)", je ne vois pas le rapport avec ce topic, vous ne voulez pas plutôt parler de "foreach(func()[0] as $key => $val)" ?
    Pour "foreach(func() as $key => $val)", la boucle se fait sur la valeur retournée par la fonction, qui n'est exécutée qu'une fois, et pour "foreach(func()[0] as $key => $val)", même chose, la boucle se fait sur la valeur de la clé 0 du tableau retourné, qui doit donc elle même être un tableau, et la fonction est donc là aussi exécutée une seule fois.
    Et dans les 2 cas, si ta fonction prend un paramètre, modifier ce paramètre dans la boucle ne changera rien, puisque la fonction est appelée avant la boucle, qui se fait ensuite sur le résultat de cet appel.
    J'ai rien compris ! tant pis

    Mais j'y reviendrai lundi et je ferai plus d'efforts.

    Bon week end.

  7. #87
    Membre régulier

    Profil pro
    Inscrit en
    décembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 52
    Points : 93
    Points
    93
    Par défaut
    Et bien c'est simple, les instructions sont exécutées de la plus imbriquées à la moins imbriquée (dans l'ordre logique d'interprétation). Donc dans func1(func2()), func2 sera exécutée, et son résultat sera passé en paramètre à func1 (c'est logique, func1 a besoin de connaitre le résultat de func2 pour pouvoir être exécutée).C'est pareil avec le foreach, la fonction est exécutée, puis le foreach sur le résultat de celle-ci. C'est une base, si tu ne la comprends pas, tu vas vite être dépassé.

    Et puis quand on poste, en général, on jette au moins un oeil à ce qu'on a posté, et on voit du premier coup d'oeil les quotes foirés, qu'on corrige

  8. #88
    Candidat au Club
    Profil pro
    Inscrit en
    août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par htrouve Voir le message
    Certes, mais php a plein de fonctions sympa, en particulier pour le parsing de chaînes.

    Je n'ai jamais rencontré de problèmes avec round. Aurais-tu un exemple svp, ça m'interesse ?
    Oui, avec un petit correctif cependant.
    round(0.575,2) renvoie bien 0.58 en version 5.2.9-2, donc correct (contrairement à ce que j'ai annoncé).
    Mais en version 5.2.3 (j'utilise plusieurs machines), round(0.575,2) renvoie 0.57 (avec BCMathsupport 'enabled'; qu'est-ce que ce serait avec 'disabled'...)
    Le bug semble donc avoir été corrigé entre ces deux versions. Dont acte.
    Ceci dit vous pouvez avoir utilisé cette fonction pendant des années sans vous rendre compte de ce bug, car php répète toujours la même erreur...
    Si je m'en suis rendu compte c'est que j'utilise une base de données qui dispose d'un environnement de développement intégré (Visual Foxpro pour ne pas la nommer) et avec lequel j'exécute également des traitements sur les tables. Et VFP, c'est du C à la base.
    Pour ce qui est des comparaisons de nombres en virgule flottante, reportez-vous à cet article: http://www.php.net/float
    Si vous avez déjà fait ce genre de comparaison, impossible de de ne pas avoir été confronté au problème.

  9. #89
    Membre chevronné
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 448
    Points : 2 199
    Points
    2 199
    Par défaut
    c'est normal que sa avance pas si au moindre ajoute de syntaxe aussi basique y'à 500 commentaires.... qu'ils l'intègrent;
    Je vois pas ce que cela pourrait empirer : S Un langage est là pour être exploiter par un programmeur.

  10. #90
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous.

    Pour ma part, une autre simplification qui pourrait être pratique, ce serait de pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( empty($objet->Attribut) )
    { ... }
    Actuellement, on est obligé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $valeur = $objet->Attribut;
    if( empty($valeur) )
    { ... }
    Ceci dit, je ne suis qu'un développeur occasionnel et je suis peut-être passé à coté de quelque chose de plus pratique et qui existerait déjà...

    aZ

  11. #91
    Membre régulier

    Profil pro
    Inscrit en
    décembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 52
    Points : 93
    Points
    93
    Par défaut
    Bah si tu peux, ce que tu ne peux pas faire, c'est if (!empty($res = func())).

  12. #92
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    mars 2003
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 135
    Points : 2 160
    Points
    2 160
    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.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  13. #93
    Nouveau membre du Club
    Homme Profil pro
    Épine dans le pieds
    Inscrit en
    mai 2004
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Épine dans le pieds

    Informations forums :
    Inscription : mai 2004
    Messages : 425
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Galak` Voir le message
    Et bien c'est simple, les instructions sont exécutées de la plus imbriquées à la moins imbriquée (dans l'ordre logique d'interprétation). Donc dans func1(func2()), func2 sera exécutée, et son résultat sera passé en paramètre à func1 (c'est logique, func1 a besoin de connaitre le résultat de func2 pour pouvoir être exécutée).C'est pareil avec le foreach, la fonction est exécutée, puis le foreach sur le résultat de celle-ci. C'est une base, si tu ne la comprends pas, tu vas vite être dépassé.
    Je comprends maintenant (merci de m'aider à rester dans le coup )

    Citation Envoyé par Galak` Voir le message
    Et puis quand on poste, en général, on jette au moins un oeil à ce qu'on a posté, et on voit du premier coup d'oeil les quotes foirés, qu'on corrige
    Désolé : j'ai posté à partir de mon téléphone et je m'étais promis de revenir corriger l'erreur.

  14. #94
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 406
    Points
    43 406
    Par défaut
    round(0.575,2) renvoie 0.57 (avec BCMathsupport 'enabled'; qu'est-ce que ce serait avec 'disabled'...)
    round() n'est pas une fonction BCMath.

    Sinon sur le fond, je ne pense pas qu'on arrête la progression d'un langage tant qu'il a des bugs ; ca fait partie de deux démarches distinctes.
    Dans ce que tu cites, c'est de toute façon hors propos puisque si problème il y avait, il n'existe plus maintenant, donc on peut avancer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #95
    Membre régulier
    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
    Points : 72
    Points
    72
    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 !

  16. #96
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    décembre 2007
    Messages
    2 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 224
    Points : 3 962
    Points
    3 962
    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 !
    Studio de création digitale
    http://bonapp.studio

  17. #97
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    août 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    c'est tres bon adjonction pour moi!
    par example, maintenant on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function TOTAL($a,$b){
    return $a+$b;
    }
     
    function Difference($a,$b){
    return $a-$b;
    }
     
    echo TOTAL*Difference;
    et la nouvelle version
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $f=function all($a,$b){
    $arr[]=$a+b;
    $arr[]=$a-b;
    return $arr;
    }
    echo $f[0]*$f[1];
    Je l'aime beaucoup!!

  18. #98
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    décembre 2007
    Messages
    2 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 224
    Points : 3 962
    Points
    3 962
    Par défaut
    Citation Envoyé par sergy-info Voir le message
    c'est tres bon adjonction pour moi!
    par example, maintenant on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function TOTAL($a,$b){
    return $a+$b;
    }
     
    function Difference($a,$b){
    return $a-$b;
    }
     
    echo TOTAL*Difference;
    Ha bon ? Tu n'oublies pas de passer des paramètres ? Du coup je ne vois pas le rapport avec le sujet courant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo (Total(10, 20) * Difference(10, 20));
    Citation Envoyé par sergy-info Voir le message
    et la nouvelle version
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $f=function all($a,$b){
    $arr[]=$a+b;
    $arr[]=$a-b;
    return $arr;
    }
    echo $f[0]*$f[1];
    Ca ne fonctionnera pas çà, si ? Tu ne passes pas de paramètes à ta fonction, tu ne met pas de parenthèses et ca ferait deux appels donc c'est naze.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $f($a, $b)[0] * $f($a, $b)[1];
    donc autant faire à l'ancienne pour ton exemple, c'est plus performant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $arr = $f($a, $b);
    echo $f[0] * $f[1];
    Studio de création digitale
    http://bonapp.studio

  19. #99
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 542
    Points : 473
    Points
    473
    Par défaut
    Moi je ne aucune raison d'ajouter de nouvelle fonct° avant de finaliser un Unicode correct.

  20. #100
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    décembre 2007
    Messages
    2 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 224
    Points : 3 962
    Points
    3 962
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    Moi je ne aucune raison d'ajouter de nouvelle fonct° avant de finaliser un Unicode correct.
    Ce 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.
    Studio de création digitale
    http://bonapp.studio

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