PHP Использование строки для создания класса с пространством имен - PullRequest
1 голос
/ 08 марта 2020

В настоящее время я пытаюсь создать класс из строки с уже имеющимся пространством имен.

namespace Project\Manager;

use Project\Exemple\ExempleView;

class Manager{
    private $db;
    function __construct($db){
        $this->db = $db;
    }

    public function displayView($module = null, $action = null){
        if($module != null){
            $sql = '
                SELECT *
                FROM urls
                WHERE urls_module = "'.$module.'"
                '.($action != null ? 'AND urls_action = "'.$action.'"' : '').'
                ORDER BY urls_id DESC 
                LIMIT 1
            ';

            $url = $this->db->read($sql);

            if(!isset($url['error'])){
                $class = $url['urls_class'];
// Edit 1
require_once $class.'.php';
                $action = $url['urls_action'];
                $view = new $class();

                $view->$action();
            }
        }
    }
}

При этом я получаю следующую ошибку:

Fatal error: Uncaught Error: Class 'ExempleView' not found in C:\wamp64\www\project\src\core\manager\manager.class.php on line 27

I Я пытался передать пространство имен в мою переменную (Project \ Exemple \ ExempleView), но он все еще не работал. Мой класс правильно загружен в мой проект, и если я пытаюсь вызвать его напрямую (новый ExempleView ()), он работает. Есть ли способ создать мой класс, используя строку таким образом?

- Правка 1 Я попытался добавить require_once моего класса, но он все еще не работает

Warning: require_once(ExempleView.php): failed to open stream: No such file or directory in C:\wamp64\www\project\src\core\manager\manager.class.php on line 27
...