[PHP][resolu] appel de fonction avec nom généré dynamiquement

appel de fonction avec nom généré dynamiquement [PHP][resolu] - PHP - Programmation

Marsh Posté le 27-10-2007 à 18:52:20    

Bonsoir :hello:
 
j ai un soucis
j aimerais generer le nom d une fonction pour pouvoir l appeler grace a la variable dans lequelle sera stocké ce nom. (tout ceci a l interieur d une classe)
 
voila un exemple pour illustrer.
j aimerai faire un truc dans ce genre, mais la syntaxe que j utilise n est pas correcte.
 

Code :
  1. class toto {
  2.     private $numero;
  3.     public function __construct() {
  4.         // bout de code qui recupere la valeur de $numero
  5.         ......
  6.         $methodeName = "this->methode_" . $this->numero;
  7.         $$methodeName();
  8.     }
  9.     private function methode_1() {
  10.         ......
  11.     }
  12.     private function methode_2() {
  13.         ......
  14.     }
  15.     private function methode_3() {
  16.         ......
  17.     }
  18.     //etc
  19. }


 
 
j imagine que ce type d appel doit etre possible
mais apres avoir cherché je n ai rien trouvé qui explique comment le faire dans le cas present
 
car hors classe j ai bien vu qu on pouvait simplement appeler le nom d une fonction par une variable suivi de ();
ex :  

Code :
  1. function toto() {
  2.     ....
  3. }
  4. $nomMethode = "toto";
  5. $nomMethode();


 
 
merci par avance :jap:


Message édité par metos le 28-10-2007 à 00:59:21

---------------
icite ca shoot : albphoto.fr   //   la ca bricole : albworkshop.fr  //  A VENDRE Canon ST-E2
Reply

Marsh Posté le 27-10-2007 à 18:52:20   

Reply

Marsh Posté le 28-10-2007 à 00:18:30    

:: c est pour les appel static  
 
j ai ce message  


Fatal error: Access to undeclared static property: toto::$methode_1


 
ton exemple appel un propriete alors que moi c est une fonction que je veux appeler
 
ce que je veux c est pouvoir appeler (dans le constructeur) la methode/fonction portant le numero de $numero.


---------------
icite ca shoot : albphoto.fr   //   la ca bricole : albworkshop.fr  //  A VENDRE Canon ST-E2
Reply

Marsh Posté le 28-10-2007 à 00:57:49    

j ai obtenu la solution sur le forum developpez.com
 
 
 
j ai utilisé ca  

Code :
  1. $methodeName = "methode_".$this->numero;
  2. $this->$methodeName()


 
edit : je n avais pas vu que tu avais edité ton post
je n ai pas testé ta 2e proposition.


Message édité par metos le 28-10-2007 à 00:59:54

---------------
icite ca shoot : albphoto.fr   //   la ca bricole : albworkshop.fr  //  A VENDRE Canon ST-E2
Reply

Marsh Posté le 28-10-2007 à 01:06:57    

metos a écrit :


ton exemple appel un propriete alors que moi c est une fonction que je veux appeler
 
ce que je veux c est pouvoir appeler (dans le constructeur) la methode/fonction portant le numero de $numero.


 
Pourquoi ne pas faire un simple switch plutôt que tenter une cochonnerie sans nom ?
 
Parce que bon
 

Code :
  1. $methodeName = "methode_" . $this->numero;
  2. $this->$methodeName();


 
c'est pas vraiment très propre...

Reply

Marsh Posté le 28-10-2007 à 01:21:16    

Arg, bravo. J'étais en train de taper la solution :)  
 
Rigolo ton site Metos, au niveau des parties ça fait furieusement penser au mien quand j'étais jeune :)
 
A++

Reply

Marsh Posté le 28-10-2007 à 02:42:01    

ze_jua a écrit :

Arg, bravo. J'étais en train de taper la solution :)  
 
Rigolo ton site Metos, au niveau des parties ça fait furieusement penser au mien quand j'étais jeune :)
 
A++


 
 
il est un peu a l abandon depuis un moment le site que j ai en signature...
je bosse sur autre chose la.
 
qu entends tu par "parties" ?
 
edit : merci pour votre aide en tout cas :jap:


Message édité par metos le 28-10-2007 à 02:45:57

---------------
icite ca shoot : albphoto.fr   //   la ca bricole : albworkshop.fr  //  A VENDRE Canon ST-E2
Reply

Marsh Posté le 28-10-2007 à 10:55:03    

Les parties du site : Home, 2d, 3d :)

Reply

Sujets relatifs:

Leave a Replay

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