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

Affichage des résultats du sondage: Nouvelle syntaxe [] pour les tableaux PHP ?

Votants
32. Vous ne pouvez pas participer à ce sondage.
  • Pour

    3 9,38%
  • Contre

    17 53,13%
  • Sans avis

    12 37,50%
Langage PHP Discussion :

Évolution : syntaxe [] pour les tableaux [Débat]


Sujet :

Langage PHP

  1. #21
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 516
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 516
    Par défaut
    Citation Envoyé par Rakken Voir le message
    Humm... pas tout a fait d'accord. C'est simplement une utilisation des possibilités du langage. Ca m'est arrivé de faire des concaténation de string et d'int (faisant de faire une conversion implicite de mon int en string).
    Dans le genre, le pire que j'ai du faire, c'est un truc du genre "machaine-1", faire un substr pour récuperer le "1", faire un ++ et reconcaterner. Ca a l'air étrange, mais ca reste pratique. Je considère même que c'est une force du php. (Après, avoir un $tmp, y stocker du texte et trois ligne plus bas y stocker un int, c'est effectivement porc, tout dépend de l'usage qu'on fait des possibilités, encore une fois)

    Plutot que de forcer absolument le typage, j'aimerai au moins qu'il puisse être optionnel. Pouvoir déclarer un string, et de fait, interdire les conversions implicite.
    Il me semble que c'est déjà possible pour les classes (en parametre d'une fonction spécifier qu'elle ne prend que des variables d'une classe donnée (sur ce point précis, je ne suis pas super sur de moi, quelqu'un pour confirmer/infirmer ?)), alors pourquoi pas pour les types de base ?
    Oui pour les classes il est possible de le typer. Soit une classe, array mais int et string ne passe pas.

  2. #22
    Membre éclairé Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Par défaut
    oui je suis d'accord mais les lois servent a éviter les débordements.
    Un langage plus rigoureux éviterait cette discussion sur les tableaux qui me semble inutile

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Moi je suis contre. La communauté de dév PHP c'est un peu tout et.... le pire comme le meilleur.
    Donc désolé pour les plus rigoureux d'entre nous, mais je pense qu'il serait de bon ton que de commencer à donner de vrais outils pour cadrer les développement dans ce langage. Et ce n'est pas en rajoutant n syntaxes que l'on ira dans ce sens.

    Cela sans dire que de toute manière je préfererais que array() deviennent explicitement un alias de new ArrayObject();. Et non un doublon.

    Perso, quitte à pinailler syntaxe, je préfererais qu'il nous demande notre avis sur les futurs espaces de noms qui utiliseront les ::. tient c'est bizarre cela me dit rappelle quelque chose... Ne serait pas confusant dans un langage aussi faiblement typé ?

    bye

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Par défaut
    Bonjour,

    la syntaxe avec les crochets me gène. Jusque là, ils étaient utilisés pour accéder aux clés et non aux valeurs, j'ai peur de la confusion que ça peut engendrer et des erreurs qui en découleront.

    Les accolades me semblent aussi plus naturelles, mais il est vrai que je viens du C...

    Stf

  5. #25
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    j'aime cette syntaxe
    int [] = {1,2,3,4,5,6};
    mais c'est du java

  6. #26
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 516
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 516
    Par défaut
    Il y a pas d'histoire que ça soit plus logique ou non. Il est pas bon pour un langage de changer en cour de route. Comme je l'ai déjà précisé, ce genre de détail n'a réellement pas d'importance. PHP souffre déjà de pas mal clone de fonctions c'est pas pour ajouter encore des doublons.
    S'ils veulent faire du ménage il devrait le faire sur d'autre domaine là ou c'est bien utile.

  7. #27
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Il est vrai que la force de PHP est de permettre de mettre ce que l'on veut à tout moment dans une variable (très pratique lorsque l'on veut tester des scripts de façon brutale )

    Maintenant, pour les tableaux, il est bon d'apporter un peu de rigueur ...

    Si au final : $tbl[4] et $tbl{4} donne la même chose cela permet de faire à sa préférence mais dans ce cas, il est vrai qu'il faut permettre de laisser sa préférence être maître sur toute la façon de coder et donc d'autoriser aussi bien les [] que les {}

    Aussi, je serai partisan d'une déclaration d'un tableau de ce type :
    $tbl = array; //Pour la déclaration standard d'un tableau ouvert
    $tbl = array(4); //Si l'on veut spécifier le nombre maximum d'occurrences
    $tbl = array(4,2); //Si l'on veut spécifier le nombre maximum d'occurrences en multi-dimensions
    $tbl = array[1,2][3,4]; //Si l'on souhaite spécifier directement des données et de ce fait exprimer la double entrée ou non
    $tbl = [1,2][3,4]; //Idem que la précédente mais rendant le code moins lisible à l'humain, car la coloration syntaxique ne pourrait pas mettre en avant le typage array;

    En somme, je préfère prendre un quart de seconde en plus à coder ma déclaration plutôt que d'avoir un code qui me donne l'impression de lire du brai

  8. #28
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Citation Envoyé par Teoftene Voir le message
    Aussi, je serai partisan d'une déclaration d'un tableau de ce type :
    $tbl = array; //Pour la déclaration standard d'un tableau ouvert
    $tbl = array(4); //Si l'on veut spécifier le nombre maximum d'occurrences
    $tbl = array(4,2); //Si l'on veut spécifier le nombre maximum d'occurrences en multi-dimensions
    $tbl = array[1,2][3,4]; //Si l'on souhaite spécifier directement des données et de ce fait exprimer la double entrée ou non
    $tbl = [1,2][3,4]; //Idem que la précédente mais rendant le code moins lisible à l'humain, car la coloration syntaxique ne pourrait pas mettre en avant le typage array;
    C'est malheureusement impossible, car ce serait un changement fondamental par rapport au fonctionnement actuel de PHP !
    D'une part, il n'y a jamais eu et il n'y aura probablement jamais de typage fort en PHP, donc spécifier un nombre figé ou une fourchette d'éléments d'un tableau ne sera jamais possible en PHP.
    D'autre part, les accolades ne fonctionnent pas pour les tableaux mais pour les chaînes. Seuls les crochets sont utilisables lorsqu'il s'agit de tableaux.

    Ce que tu présentes ici est probablement valide pour un langage mais ce n'est pas adapté à PHP

  9. #29
    Membre confirmé Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Par défaut
    J'ai voté 'Contre' pour les raisons concernant la confusion entre lecture et écriture.

  10. #30
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Si on reste dans cette logique, je vois pas pourquoi les tableaux serait les seuls variable ou l'on doit déclarer le type, c'est pas logique.
    Pas tout à fait : array() n'est pas une déclaration de type.

    En accord avec les contre à ce sujet, côté ergonomie visuelle et maintenabilité du code :
    1 - en tant que marqueur visuel, array() et plus visible que les crochets. D'autant qu'il y a pas mal d'éditeurs qui mettent en gras ce genre de mots réservés, ça permet de les repérer facilement et comme le signale bercerker united : + de clarté => moins de bugs
    2 - de même, moins de doublons dans les écritures => plus d'homogénéité, donc une meilleure maintenance. Raison pour laquelle je suis tout aussi peu favorable à l'utilisation des accolades.

    Si PHP était un langage à typage fort, alors une construction à base de crochets, ou à la Java, serait agréable tout en évitant le problème du typage, justement. Mais PHP est un langage à typage faible : si le code ne permet pas de visualiser facilement les types affectés, on augmente les risques d'erreurs (ré-affectation ou transtypages sauvages).

    Côté compilateurs, le problème est évidemment que cette nouvelle interprétation des [] étend les contextes d'interprétation de ces symboles : actuellement, ils servent
    1 - d'opérateurs d'accès dans un tableau
    2 - d'opérateurs d'affectation sur un tableau construit.

    Si la nouvelle écriture est acceptée, une nouvelle syntaxe devra être prise en compte dans les analyseurs ce qui, je crois, risque d'induire une (légère) diminution des performances lors de l'interprétation.

    D'un autre côté, cette nouvelle écriture ouvre la voie vers la possibilité d'utiliser des tableaux anonymes. Pas sûr que ce soit vraiment indispensable, je balance juste l'idée au passage dans le cadre du brainstorming.

    Globalement, donc, je voterais plutôt contre même si ça ne m'empêchera pas vraiment de dormir

Discussions similaires

  1. La meilleure syntaxe pour les entrées/sorties
    Par Lunixinclar dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/03/2007, 14h55
  2. Réponses: 2
    Dernier message: 17/03/2007, 01h15
  3. Syntaxe pour les heures
    Par Soph70 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 26/09/2006, 16h48
  4. Utilisation des références pour les tableaux
    Par Bouboubou dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 14/12/2005, 14h47

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