Member 13733578 Ответов: 0

Фатальная ошибка: неперехваченная ошибка: класс 'MVC\library\notfoundexception' - автозагрузчик


Я думаю, что у меня может быть проблема с моим загрузчиком, который не работает правильно.

Я думаю, что самое безопасное-это показать вам мои каталоги

Макет Каталога

А вот и мой автопогрузчик

<?php
    // simple autoloader
    spl_autoload_register(function ($className) {
        if (substr($className, 0, 4) !== 'Mvc\\') {         //' // [EDIT: Format fix]
            // not our business
            return;
        }

        $fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 4)).'.php';                //' // [EDIT: Format fix]


        if (file_exists($fileName)) {
            include $fileName;
        }
    });

    // get the requested url
    $url      = (isset($_GET['_url']) ? $_GET['_url'] : '');
    $urlParts = explode('/', $url);

    // build the controller class
    $controllerName      = (isset($urlParts[0]) && $urlParts[0] ? $urlParts[0] : 'index');
    $controllerClassName = '\\Mvc\\Controller\\'.ucfirst($controllerName).'Controller';                 //' // [EDIT: Format fix]


    // build the action method
    $actionName       = (isset($urlParts[1]) && $urlParts[1] ? $urlParts[1] : 'index');
    $actionMethodName = $actionName.'Action';

    try {
        if (!class_exists($controllerClassName)) {
            throw new \Mvc\Library\NotFoundException();
        }

        $controller = new $controllerClassName();

        if (!$controller instanceof \Mvc\Controller\Controller || !method_exists($controller, $actionMethodName)) {
            throw new \Mvc\Library\NotFoundException();
        }

        $view = new \Mvc\Library\View(__DIR__.DIRECTORY_SEPARATOR.'views', $controllerName, $actionName);
        $controller->setView($view);

        $controller->$actionMethodName();
        $view->render();

    } catch (\Mvc\Library\NotFoundException $e) {
        http_response_code(404);
        echo 'Page not found: '.$controllerClassName.'::'.$actionMethodName;
    } catch (\Exception $e) {
        http_response_code(500);
        echo 'Exception: '.$e->getMessage().'<br><pre>'.$e->getTraceAsSt . ring().




Ошибка выбрасывается на строку 30, которая будет:
throw new \Mvc\Library\NotFoundException();


В нем также говорится: :

Stack trace: #0 {main}


Чего мне здесь не хватает?

Заранее спасибо.

Что я уже пробовал:

Я попытался переместить direcotires вокруг думая, что это имеет какое-то отношение к моей конфигурации xxamp.

0 Ответов