php: класс не найден (динамически созданный экземпляр)

Я хочу динамически создавать экземпляры некоторых классов, но я получил сообщение об ошибке, говорящее о том, что класс не найден (если он вызывается динамически из строки), в противном случае, если я обычно создал экземпляр класса, набрав имя класса "без использования strings", он будет успешно создан.

Ошибка:

Неустранимая ошибка: класс SiteController не найден в C:\wamp\www\framework\controllers\RouterController.php в строке 31

ядро/Контроллер.php

namespace core;

class Controller{

    function __construct(){
        $files = glob('./' . '/*.php');
        foreach ($files as $file) {
            require_once($file);   
        }
    }
}

контроллеры/RouterController.php

namespace controllers;

require_once("core/Controller.php");

use \core\Controller;
use \controllers\SiteController;

class RouterController extends Controller{

    private $url;
    private $controller;
    private $controllerName;
    private $action;

    function __construct($url){
        parent::__construct();
        $this->url = $url;
        $this->splitUrl();

        // the following is working successfully

        $this->controller = new SiteController();
        $this->controller->{"$this->action"}();

        if($this->controllerName != '' && $this->action != ''){

            // but this is not working

            $this->controller = new $this->controllerName();
            $this->controller->{"$this->action"}();
        }
    }

    private function splitUrl(){
        $url = preg_split("#/#", $this->url);
        $this->controllerName = !empty($url[0]) ? ucfirst($url[0])."Controller" : null;
        $this->action = !empty($url[1]) ? $url[1] : "index";
    }
}

контроллеры/SiteController.php

namespace controllers;

class SiteController{

    public function index(){
        echo "this is index";
    }
}

person Mohammad    schedule 27.11.2017    source источник
comment
Ошибка не в строке $this->controller = new SiteController();?   -  person splash58    schedule 27.11.2017
comment
@splash58 нет, это на $this->controller = new $this->controllerName();   -  person Mohammad    schedule 27.11.2017
comment
Вы пытались добавить пространство имен в динамически созданную строку? (хотя он находится в том же пространстве имен)   -  person Philipp Maurer    schedule 27.11.2017
comment
@PhilippMaurer это вызовет синтаксическую ошибку   -  person Mohammad    schedule 27.11.2017
comment
@Mohammad Ты начал с косой черты? '\controllers\SiteController'   -  person Philipp Maurer    schedule 27.11.2017
comment
@PhilippMaurer да, конечно   -  person Mohammad    schedule 27.11.2017