Есть такой маршрутизатор, и в случае если нет необходимого контроллера, загружается контроллер 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;
}
}