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 :

cette syntaxe est étonnante [PHP 7]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut cette syntaxe est étonnante
    Bonsoir,

    cette syntaxe est acceptée :
    $url="$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]"; alors que j'aurais écrit :
    $url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; .

    Il y a 3 choses différentes :
    - une variable PHP encadrée par des guillemets
    - l'absence d'opérateur de concaténation
    - l'absence de quote pour déclarer une clé de tableau.

    Peut-on m'expliquer pourquoi les 2 syntaxes sont correctes ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Bonjour,

    Lorsqu'un signe dollar "$" est rencontré dans une chaine de caractère entourée des guillemets, l'analyseur prendra autant de caractères que possible pour former un nom de variable valide.

    Dans le cas de "$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]" l'analyseur PHP interprète les deux variables $_SERVER[HTTP_HOST] et $_SERVER[PHP_SELF] séparément et ajoute les simples quotes autour des indexes HTTP_HOST et PHP_SELF + le point de concaténation.

    Comme il est possible aussi d'utiliser des accolades {}(syntaxe complexe) pour spécifier la fin de nom d'une variable, mais seulement si la chaine est entourée des guillemets et pas des apostrophes.

    La documentation php.

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url="$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]";
    À noter que cette syntaxe utilise un effet de bord PHP qui considère les clefs comme des constantes et n'est pas utilisable dans toutes les situations, ex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $s = "$a[key][0]"; // => Erreur
    Dans une chaîne mieux vaut toujours utiliser les {} et bien délimiter les clefs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $url = "{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}";
    $s = "La valeur est : {$a['key'][0]}\r\n";
    Là on est sûr que ça marchera toujours.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. c'est quoi cette syntaxe : class="<?=$test?>" ?
    Par Figaro90 dans le forum Langage
    Réponses: 5
    Dernier message: 20/04/2010, 16h41
  2. Quelle est mon erreur dans cette syntaxe
    Par BuzzLeclaire dans le forum Langage
    Réponses: 18
    Dernier message: 01/07/2009, 01h28
  3. Quelle est donc cette syntaxe ? [[ ]]
    Par Sergejack dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 16/01/2008, 20h50
  4. ou est l'erreur dans cette syntaxe svp ?
    Par delavega dans le forum ASP
    Réponses: 2
    Dernier message: 29/05/2007, 14h03
  5. c'est quoi cette syntaxe !
    Par bnuitrare dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 28/08/2006, 10h50

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