qu'est-ce que c'est que ces acolades ?

qu'est-ce que c'est que ces acolades ? - PHP - Programmation

Marsh Posté le 20-11-2008 à 15:48:17    

Je suis une grosse buse en PHP, et là on vient de nous coller, avec 2 autres collègues, sur une appli qui utilise un framework obscure (free[Ride]Engine) dont on essaye de comprendre le fonctionnement.
Voilà un extrait de code qui nous passe au dessus :

Code :
  1. if( @strlen($_SERVER[strtoupper($_rule['type'])])>0 ){
  2.                            $this->log("  ". _("Rule 'match' failed" ) . " ( ${_rule['type']} ". _("is empty" ) .')', PEAR_LOG_INFO);
  3.                        }else{
  4.                            $this->log("  " . _("Rule sucessfully added" ) ." ( $_rule{['type']} ". _("is not empty" ) . ')');
  5.                            $_request_->addAttribute($_rule['paramName'],$_rule['paramValue']);
  6.                        }
  7.                        $this->log(_("Found value" )." : " . @$_SERVER[strtoupper($_rule['type'])], PEAR_LOG_INFO);


 
on comprend pas trop la syntaxe  ${_rule['type']} ou $_rule{['type']} ... autant $_rule['type'] on voit bien, mais les deux autres... aucune idée.
 
ça parle à quelqu'un ici ?
 
merci de votre aide.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 20-11-2008 à 15:48:17   

Reply

Marsh Posté le 20-11-2008 à 18:07:52    

${$Var}, c'est pour appeler une variable "dynamiquement". Je m'explique.

Code :
  1. $Toto = "coucou";
  2. $Var = "Toto";
  3. echo ${$Var};


 
ça va afficher "coucou".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-11-2008 à 18:09:39    

${_rule['type']} fait un peut la même chose je pense. Pour moi, _rule['type'] est une constante mais je ne savais pas qu'on pouvoir déclarer un tableau en constante. :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-11-2008 à 18:46:38    

on dirait que ce n'est pas une constante puisque çà se trouve dans une string.
Vu qu'il s'agit d'un élément de tableau, je dirais que çà correspond au fait que ceux ci doivent être entourés d'accolades dans une string formée de guillemets doubles.
Ce qui me choque, c'est que dans ce cas il me semblait qu'il fallait faire :

Code :
  1. echo "{$array['key']}";


 
et non
 

Code :
  1. echo "${array['key']}";


 

Reply

Marsh Posté le 21-11-2008 à 17:59:02    

les 2 syntaxes sont valides, mais ne font pas la même chose. mettons qu'on ait :

Code :
  1. $array['key'] = "toto";
  2. $toto = "coucou";


 
Le premier code va afficher :

Code :
  1. {toto}


 
Le 2ième :

Code :
  1. coucou


 
C'est pas la même chose. Par contre, je comprends pas la syntaxe ${_rule['type']}. Y'aurait un $ devant _rule['type'], ok, mais sans le $, je vois pas...:/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-11-2008 à 18:15:03    

en faite vous parler en simplifiant de :

Code :
  1. $toto = 'coucou';
  2. $tutu = 'toto';
  3. echo $$tutu;


 
Cela affichera coucou
 
c'est le meme principe mais par contre je comprend pas la syntax pareil :D


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 21-11-2008 à 18:16:13    

poste dans blabla@php, où passent des gens plus expérimentés que moi pour te répondre :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed