Как написать контроллер, который отправляет массив в качестве параметра URL?

На некоторых платформах MVC метод контроллера принимает содержимое URL-адреса в виде списка элементов, разделенных прямой косой чертой, полученных в качестве параметров, например,

 site.com/controller/method/var1/var2

имеет связанный контроллер:

class Controller

function method(var1, var2){
}
}

Но как мне добиться этого кодирования? Я хочу начать с массива и отправить параметризованный список в функцию, т.е.

$args = array("one"=>"cheese","two"=>"eggs");

php_function("myfunction",$args);

В myfunction, Я бы

function myfunction($one, $two){
}

Я знаю о func_get_args для принятия неизвестного количества аргументов. user_call_func полезно кроме

user_call_func("myfunction",$args);

…приводит к тому, что первый параметр содержит массив аргументов, без разницы func_get_args вызывается из функции.

extract тоже не работает, так как мне нужно получить массив как переменную внутри функции.

0

Решение

Мне удалось создать желаемое с помощью следующего.

class BootStrap {

private $controller = 'NameOfIle.php';
private $method = 'function()';
private $params = array('sdfds' => 'dsfdsf', 'sdfdsfsdfdsfsd' => 'sdfdsfds');public function __construct() {
call_user_func_array(array($this->controller, $this->method), $this->params);
}
}
0

Другие решения

call_user_func_array принимает описание метода и массив аргументов и возвращает результат вызова функции. Я думаю, что он будет принимать аргументы из массива по порядку, а не по имени. Вы должны собрать массив аргументов в правильном порядке и, возможно, проверить наличие недостающих аргументов, прежде чем использовать это.

1

По вопросам рекламы [email protected]