(N неизвестно) $ controller -> $ action ($ param1, $ param2, $ param3 ... $ paramN); - PullRequest
0 голосов
/ 14 мая 2009

(N неизвестно)

$ контроллер -> $ действие ($ PARAMS);

должно быть

$ controller -> $ action ($ param1, $ param2, $ param3 ... $ paramN);

Ответы [ 2 ]

2 голосов
/ 14 мая 2009

Не совсем уверен, что вы хотите, но если вы хотите вызвать метод с неизвестным числом параметров, вы можете использовать call_user_func_array()

например:

$result = call_user_func_array(array($controller, $action), $params);

который дал массив вроде:

array(1, 2, 'a');

будет эквивалентно этому:

$result = $controller->$action(1, 2, 'a');

Вы могли бы создать такой массив, выполнив что-то вроде ниже, но я думаю, что было бы лучше использовать массив в первую очередь

$param1 = 'Something';
$param2 = 'Test';

$j = 1;
$params = array();
while (isset(${'param' . $j})) {
    $params[] = ${'param' . $j};
    $j++;
}

print_r($params);

//will output
Array
(
    [0] => Something
    [1] => Test
)
1 голос
/ 14 мая 2009

PHP использует очень гибкие массивы. Вы можете поместить в них любые типы данных. Это исключает необходимость N параметров. Просто используйте массив в качестве параметра и просматривайте все элементы (параметры).

Если вы используете смешанные типы в качестве параметров, вы можете в цикле проверить, какие типы переменных, используя функцию gettype ($ var).

<?php
    $params = Array($param1, $param2, $paramN);
    $controller->$action($params)
?>
...