2011-01-21 3 views
0

J'ai une fonction qui fait quelque chose de similaire à ceci:passer des variables dans le tableau en tant que paramètres de fonction?

function load_class($name){ 
    require_once('classes/'.$name.'.php'); 
    return new $name(); 
} 

ce que je veux faire est de le modifier, je peux faire quelque chose comme ça

function load_class($name, $vars = array()){ 
    require_once('classes/'.$name.'.php'); 
    return new $name($array[0], $array[1]); 
} 

Le sens général de c'est. Je veux être capable de transmettre un tableau de valeurs qui est utilisé comme paramètres pour la classe.

Je ne veux pas passer dans le tableau actuel.

est-ce possible?

+0

Bien que la réponse que vous avez accepté est certainement correct, je vous encourage de toute façon à regarder en autoloading de classe comme indiqué par bharath. À partir du code que vous avez fourni, il semble que vous compliquiez un peu les choses. – Mchl

Répondre

0

Vous pouvez appeler des fonctions de cette façon avec call_user_func_array, mais dans le cas d'un constructeur de classe, vous devez utiliser ReflectionClass::newInstanceArgs:

class MyClass { 
    function __construct($x, $y, $z) { } 
} 


$class = new ReflectionClass("MyClass"); 

$params = array(1, 2, 3); 

// just like "$instance = new MyClass(1,2,3);" 
$instance = $class->newInstanceArgs($params); 

Votre code pourrait ressembler à ceci:

function load_class($name, $vars = array()){ 
    require_once('classes/'.$name.'.php'); 
    $class = new ReflectionClass($name); 
    return $class->newInstanceArgs($vars); 
} 
1

si vous essayez de charger des classes, vous pouvez utiliser __autoload fonction

plus d'informations here

+1

Ou encore mieux en utilisant spl_autoload_register(). +1 – Mchl

Questions connexes