2010-11-18 7 views
0

J'ai une question très spécifique: le code suivant est-il possible sur une ligne? Ou y a-t-il une meilleure façon de faire la même chose?Appel de fonction dynamique PHP

$key = rand(1,100); 

$temp = 'GetObjects'.ucfirst($key).'Array'; 
$objects = $this->module->$temp(); 

Comme ceci:

$objects = $this->module->'GetObjects'.ucfirst($key).'Array'(); 
+0

Honnêtement, vous avez que de nombreuses méthodes sur votre 'module' que 1-100 œuvres? Bon dieu! – ircmaxell

+0

Non, $ key est un exemple, il a 1-20 méthodes ou plus. – Simon

Répondre

4

Peut-être

$objects = $this->module->{'GetObjects'.ucfirst($key).'Array'}(); 

ou

$objects = call_user_func(array($this->module, 'GetObjects'.ucfirst($key).'Array')); 
+0

{/ * est correct * /}. Y a-t-il de la documentation sur celui-ci? – Simon