PHP: Config::setArray(array_merge_recursive(...array_map(fn($file) => include $file, glob('config/*.php')))); new Debug(Config::get('debug.mod') /* тут создаю ошибку (mod вместо mode) */, Config::get('debug.logs')); Метод без выброса PHP: public static function get($keys = null) { if (!$keys) { return self::$array; } $data = self::$array; $array = ''; foreach (explode('.', $keys) as $key) { if (!is_array($data) || !array_key_exists($key, $data)) { // throw new Exception("Не найден $key-массив или $key-ключ массива: $array"); } $data = $data[$key]; $array .= "['$key' => "; } return $data; } Результат: https://ibb.co/5xCpFF4 С выбросом PHP: public static function get($keys = null) { if (!$keys) { return self::$array; } $data = self::$array; $array = ''; foreach (explode('.', $keys) as $key) { if (!is_array($data) || !array_key_exists($key, $data)) { throw new Exception("Не найден $key-массив или $key-ключ массива: $array"); } $data = $data[$key]; $array .= "['$key' => "; } return $data; } Результат: https://ibb.co/s2P8hRL Как отловить пользовательское исключение при передаче конфигов в обработчик ошибок?
Я до сих пор не понимаю, каким хером программисты пытаются свой велосипед сделать с пользовательским обработчиком, вылавливая ошибки. Вот в xуй вам он вперся ? На Хре На ? Тем более если использовать Debug в PHPStorm PHP: <?php declare ( strict_types = 1 ); namespace Nouvu\Framework\Http; use Symfony\Component\Routing\Exception\ResourceNotFoundException AS SymfonyRoutingNotFound; use Symfony\Component\HttpFoundation\Response; use Nouvu\Framework\Foundation\Application AS App; use Nouvu\Framework\Http\Controllers\KernelController; use Nouvu\Framework\Routing\{ RouteCollection AS NouvuCollection, RequestContext AS NouvuContext, UrlMatcher AS NouvuMatcher, CollectionTrait, ContextTrait }; use Nouvu\Framework\View\{ Repository\CommitRepository, Builder\Content }; use Nouvu\Resources\Controllers; class Kernel { ... public function send() { $context = $this -> context(); $context -> copyRequest( $this -> app -> request ); $matcher = $this -> getMatcher( $this -> collection(), $context ); try { $this -> terminal( $this -> handle( $matcher ) ); } catch ( \Throwable $e ) { if ( $this -> app -> repository -> get( 'config.debug.display' ) ) { throw $e; } $this -> setRequestAttributes( $this -> getAttributesError( $matcher ) ); $this -> terminal( $this -> getCommit() ); } } }
а с каких пор логика NotFoundPage считается ошибкой ? Сноси и делай Router. От него выкидывай специальное исключение RoutingNotFound, которое перехватится на границе выхлопа. Выдашь всем страницу 404 и если тебе так нужно - запишешь в журнал логов остальное.