Это то, что я в настоящее время:PHP - Вызов функций из массива?
public function setUp() {
$tests = array(
'printHello' => array(),
'printWorld' => array(),
'printName' => array('Bob'),
);
}
public function printHello() {
echo "Hello, ";
}
public function printWorld() {
echo "World!";
}
public function printName($name=false) {
echo $name;
}
То, что я хочу сделать, это перебрать все функции и выполнять их последовательно. Это то, что я должен был в конечном итоге делает, но это только кажется, что там должно быть более эффективный способ сделать это:
foreach($tests as $test=>$parameters) {
$num_params = count($parameters);
switch($num_params) {
case 0:
$this->$test();
break;
case 1:
$this->$test($parameters[0]);
break;
case 2:
$this->$test($parameters[0],$parameters[1]);
break;
case 3:
$this->$test($parameters[0],$parameters[1],$parameters[2]);
break;
default:
echo "Error! More than 3 parameters for function" . $test . "!";
exit;
}
}
Я использую PHP 5.3. Есть ли более эффективный способ вызова функций в цикле?
EDIT: I не может использовать call_user_func_array
, потому что я вызываю нестатические методы из своего родительского класса. Есть ли другой способ?
Я не могу использовать call_user_func_array, потому что я звоню не-статические методы из в пределах своего родительского класса. Есть ли другой способ? – Knuxchan
@Knuxchan - для статических методов не требуется использование 'call_user_func_array()'. Посмотрите мой пример кода и демонстрацию. – nickb
Спасибо! Оно работает! Ценить это! – Knuxchan