Я работаю над созданием инфраструктуры MVC, которая передает любые параметры URL после параметра "action" запрошенному действию через параметры метода действия.
, поэтому, если URL-адрес:
host/controller_name/action_name/param1/param2
происходит следующее (упрощенно, конечно):
$requested_controller = new controller_name();
call_user_func_array(array($requested_controller, action_name), array(param1, param2);
Проблема в сообщении об ошибке. Если URL-адрес запрашивается с неправильным количеством параметров (действие ожидает двух параметров, но URL-адрес содержит только один параметр, я получаю предупреждающее сообщение, а затем хаос).
Поскольку это процедурная ошибка, а не исключение, я не могу попытаться / поймать ее, не так ли? Есть ли способ проверить количество ожидаемых параметров для метода действия, прежде чем пытаться его запустить? Или я должен атаковать это совершенно по-другому?
РЕДАКТИРОВАТЬ (РЕШЕНИЕ)
$action_method_relfection = new ReflectionMethod($requested_controller, $requested_action);
if (count($path_variables) < $action_method_relfection->getNumberOfRequiredParameters() || count($path_variables) > $action_method_relfection->getNumberOfParameters()) {
// if not, redirect to 404 error
self::redirect_to_404();
}