gpt4 book ai didi

带命名空间的 PHP 动态类加载

转载 作者:行者123 更新时间:2023-12-04 16:57:30 24 4
gpt4 key购买 nike

我在 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();

关于带命名空间的 PHP 动态类加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39580807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com