У меня своя CMS, в роуте функции вызиваются вот так:
call_user_func_array([$Object, $Model], $this->Segments);
Соответственно, Обьект, Модель, и сегменты URI.
В функциях я чётко пишу какой тип данных нужен, например:
public function getItemById(int $itemId)
Когда приходет не тот тип данных (например, вместо site.com/pages/1 пользователь ввел site.com/pages/1aaa) получаю ошибку:
Fatal error: Uncaught TypeError: Argument 1 passed to App\Forum::Group() must be of the type integer, string given in F:\domains\mysite.loc\App\Forum\Forum.php:24 Stack trace: #0 [internal function]: App\Forum->Group('gggfgdg') #1 F:\domains\mysite.loc\System\Router.php(26): call_user_func_array(Array, Array) #2 F:\domains\mysite.loc\index.php(32): System\Router->run() #3 {main} thrown in F:\domains\mysite.loc\App\Forum\Forum.php on line 24
Как я не пробую поймать исключение, не получается(
try {
call_user_func_array([$Object, $Model], $this->Segments);
} catch (\Exception $exception){
echo 1;
exit;
} catch (TypeException $e) {
echo 2;
exit;
} catch (Error $e) {
echo 3;
exit;
}
_____________
Одесса - мой город!)))