[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема в роуте с call_user_func_array
savelikan
Привет всем, прошу совета)
У меня своя 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;
}


_____________
Одесса - мой город!)))
savelikan
спасибо)

_____________
Одесса - мой город!)))
AllesKlar
Исключения - вещь хорошая, но замещать ее валидацией входящих данных - не самый лучший способ.
Все же роутинг подразумевает под собой обработку URI, а там в 100% случаях получаем String
И было бы лучше валидировать параметры роутинга на входе, а не выкидывать из глубин кода вверх по стеку исключения и потом думать, откуда оно пришло и почему.

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.