我在PHP中使用名称空间,并试图动态加载类。我当前的结构看起来像这样:
class Bootstrap {
protected $controller = 'home';
protected $method = 'index';
protected $params = [];
function __construct($url) {
$urlArray = $this->parseurl($url);
if(file_exists('../app/http/controllers/' . $urlArray[0] . '.php'))
{
$this->controller = $urlArray[0];
unset($urlArray[0]);
}
require_once '../app/http/controllers/' . $this->controller . '.php';
$this->controller = new Controllers'$this->controller;
var_dump($this->controller);
}
public function parseurl($url) {
return $url = explode('/', filter_var(rtrim($url, '/'), FILTER_SANITIZE_URL));
}
}
得到的错误是:
解析错误:语法错误,意外的'$this' (T_VARIABLE),期望标识符(T_STRING)
我如何使它,所以我可以加载类与这个引导函数?
下一行:
$this->controller = new Controllers'$this->controller;
是无效的PHP代码。
如果需要使用动态类名实例化类,请使用中间变量:
$className = 'Controllers''' . $this->controller;
$this->controller = new $className();
应该可以:
$controller = 'Controllers''.$this->controller;
$this->controller = new $controller();