VGVolkov
@VGVolkov
самоучка

Как запись имени класса в переменную влияет на его пространство имен?

Есть такой маршрутизатор, и в случае если нет необходимого контроллера, загружается контроллер Error, класс которого описан в отдельном файле в глобальном пространстве имен. Но когда запрос совпадает с одним из установленных контроллеров, то вызывается, соответственно он, тоже описанный в глобальном пространстве (это предыстрория ). Так вот, когда имя нужного контроллера попадает в $url, то у него нет вначале "\". Как так происходит, что класс контроллера все равно находится??? (Если вручную вбить содержимое $url в строчку инициализации контроллера (напомню, она там будет без обратного слеша), то будет ошибка, и это справедливо!). Вопрос, как запись имени класса в переменную влияет на его пространство имен?
namespace app\controllers;
class Bootstrap
{
    public function __construct()
    {
        //echo 'бутстрап подключен<br>';
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        $file = 'app/controllers/'.$url[0].'.php';
       // echo $file.'<br>';
        if(file_exists($file)){

            require_once $file;
        } else {
            require_once 'app/controllers/error.php';
            $controller = new \Error;
            return false;
        }
            $url = ucfirst($url[0]);
            echo $url;
            $controller = new $url;

    }

}
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
как запись имени класса в переменную влияет на его пространство имен?

никак. У Вас там не пространство имен, а обычная строка.
Как по Вашему, что делает этот код?
rtrim($url, '/');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы