2009-05-19 9 views
1

J'essaie d'utiliser une variable pour obtenir une fonction dans une classe étendue, c'est ce que je veux faire, mais je ne peux pas le faire fonctionner, merci pour votre aide.PHP inclure des fonctions de classe avec des variables

class topclass { 
    function mode() { 
     $mode = 'function()'; 

     $class = new extendclass; 
     $class->$mode; 
    } 
} 

Répondre

7

N'incluez pas les crochets "()" dans la variable $ mode.

class topclass { 
    function mode() { 
     $mode = 'functionx'; 

     $class = new extendclass; 
     $class->$mode(); 
    } 
} 
0

Vous pouvez également utiliser un rappel, qui est un tableau de l'instance et une chaîne nommant la fonction. Si l'appel prévu est foo- $> bar(), le rappel serait:

$callback = array($foo, 'bar'); 

Fonctions régulières (pas une méthode) et les méthodes statiques sont stockées sous forme de chaînes simples:

// Function bar 
$callback = 'bar'; 
// Static method 'bar' in class Foo 
$callback = 'Foo::bar'; 

Il est appelé avec call_user_func ou call_user_func_array, le second permettant paramètres à passer à la fonction de rappel:

// No parameters 
call_user_func($callback); 
// Parameters 'baz' and 'bat' 
call_user_func_array($callback, array('baz', 'bat'); 

Il peut sembler comme cela est une complication inutile, mais dans de nombreux cas, y Vous voudrez peut-être créer un appel de fonction par programmation, ou vous ne connaîtrez pas à l'avance le nombre de paramètres que vous passerez à une fonction (certaines fonctions, telles que array_merge et sprintf autorisent un nombre variable de paramètres).

Questions connexes