[Решено] Fatal error: Class 'vendor\core\Router' not found

Тема в разделе "PHP", создана пользователем ArtRad.TNP, 16 ноя 2018.

Статус темы:
Закрыта.
  1. ArtRad.TNP

    ArtRad.TNP

    Регистрация:
    16 ноя 2018
    Сообщения:
    5
    Симпатии:
    0
    Помогите решить проблему, ломаю над неи голову не первыи день(только начинаю работать с php). Выдаёт вот такую вот ошибку: Fatal error: Class 'vendor\core\Router' not found in C:\OSPanel\domains\Devintex.by\vendor\core\routes.php on line 5

    Код Router:
    PHP:
    <?php

    namespace vendor\core;

    class 
    Router
    {
        public static
            
    $route = [],
            
    $routes = [];

        public static function 
    add($regexp$route = [])
        {
            
    self::$routes[$regexp] = $route;
        }

        public static function 
    matchRoute($url)
        {
            foreach (
    self::$routes as $pattern => $route)
            {
                if(
    preg_match("#$pattern#i"$url$mathes))
                {
                    foreach (
    $mathes as $k => $v)
                    {
                        if (
    is_string($k))
                        {
                            
    $route[$k]=$v;
                        }
                    }
                    if (!isset(
    $route['action']))
                    {
                        
    $route['action'] = 'index';
                    }
                    
    $route['controller'] = self::upperCamelCase($route['controller']);
                    
    self::$route $route;
                    return 
    true;
                }
            }
            return 
    false;
        }

        public static function 
    dispatch($url)
        {
            
    $urlself::removeQueryString($url);
            if (
    self::matchRoute($url))
            {
                
    $controller'app\controllers\\' self::$route['controller'] . 'Controller';
                if (
    class_exists($controller))
                {
                    
    $cObj = new $controller(self::$route);
                    
    $action self::lowerCamepCase(self::$route['action']).'Action';
                    if (
    method_exists($cObj $action))
                    {
                        
    $cObj ->$action();
                        
    $cObj -> getView();
                    }else{
                        echo 
    "Метод <b>$controller::$action()</b> не наиден";
                    }
                }else{
                    echo 
    "Контролер <b>$controller</b> не наиден";
                }
            }else{
                
    http_response_code(404);
                include 
    '404.html';
            }
        }

        protected static function 
    upperCamelCase($name)
        {
            return 
    str_replace(' '''ucwords(str_replace('-'' '$name)));
        }

        protected static function 
    lowerCamelCase($name)
        {
            return 
    lcfirst(self::upperCamelCase($name));
        }

        protected static function 
    removeQueryString($url)
        {
            if(
    $url)
            {
                
    $params explode('&'$url);
                if (
    false === strpos($params[0], '='))
                {
                    return 
    rtrim($params[0], '/');
                }else{
                    return 
    '';
                }
            }
        }

    }
    Код routes:
    PHP:
    <?php

    use vendor\core\Router;

    Router::add('^@(?P<alias>[a-zA-Z0-9-]+)$', ['controller' => 'Profile''action' => 'user']);
    Router::add('^page/(?P<action>[a-z-]+)/(?P<alias>[a-z-]+)$', ['controller' => 'Page']);
    Router::add('^page/(?P<alias>[a-z-]+)$', ['controller' =>'Page''action' => 'view']);

    Router::add('^$', ['controller' => 'Main''action' => 'index']);
    Router::add('^regist$', ['controller' => 'auth''action' => 'regist']);
    Router::add('^login$', ['controller' =>'auth''action' => 'login']);
    Router::add('^log_out', ['controller' =>'auth''action' =>'log_out']);
    Router::add('^(?P<controller>[a-z-]+)/?(?P<action>[a-z-]+)?$');
     
    Lasted edited by : 16 ноя 2018
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ошибка говорит о том, что не может найти класс, но он есть, так что, вероятно, проблема с автолоадером.

    Как называется файл с классом Router и где он лежит?
     
  3. ArtRad.TNP

    ArtRad.TNP

    Регистрация:
    16 ноя 2018
    Сообщения:
    5
    Симпатии:
    0
    Действительно проблема была с автолоадером, спасибо.
     
Статус темы:
Закрыта.