vendredi 18 janvier 2013

Les alternatives pour remplacer eval (PHP)


Modification d’une variable avec un nom variable

Parfois, on doit modifier une variable dont on ne connait pas le nom. En utilisant eval, on peut créer une chaine qui génère dynamiquement le nom de la variable à partir du contenu d’une autre (Oui, oui :P ). Cependant, sans eval, c’est aussi possible :) ! Pour cela il suffit de faire :

  1. // Variable dont on ne connait pas le nom  
  2. $article = "test";  
  3.   
  4. // Le nom de la variable est stocké dans celle-ci  
  5. $nomDeLaVariable = "article";  
  6.   
  7. // On va modifier la variable qui a un nom variable  
  8. $$nomDeLaVariable = "test2";  
  9.   
  10. // On affiche le resultat : "test2" !  
  11. echo $article;  
Effectivement, en utilisant un double dollar « $$ », on remplace le nom de la variable par le contenu de la variable « nomDeLaVariable ».

Appel d’une fonction avec un nom variable

Tout comme le point précédent, on va utiliser une méthode relativement similaire ; voici l’exemple :

  1. // Définition d'une fonction avec un nom que l'on ne connait pas  
  2. function plop() {  
  3.     echo "test";  
  4. }  
  5.   
  6. // Nom de la fonction stockée dans cette variable  
  7. $nomDeLaFonction = "plop";  
  8.   
  9. // Appel de la fonction avec le nom stocké dans $nomDeLaFonction  
  10. $nomDeLaFonction();  
Et voilà ! La fonction « plop() » sera exécutée ! Il faut savoir qu’il vous est aussi possible d’utiliser call_user_func de php. Vous pouvez aussi consulter call-user-func-array pour manipuler plus facilement les paramètres à envoyer à votre fonction.

Créer une instance d’une classe avec un nom variable

Comme pour les deux points précédents, vous pouvez faire :

  1. $Objet = new $nomObjet();  

Aucun commentaire:

Enregistrer un commentaire