我想问一下PHP克隆/复制对象到$ this变量.
目前我是MVC的新手,我想做CodeIgniter之类的事情.
我想直接访问变量.
在我的__construct()中,我总是将全局变量传递给新的控制器(类),
例如.
function __construct($mvc)
{
$this->mvc = $mvc;
}
Run Code Online (Sandbox Code Playgroud)
在$ mvc里面得到了配置对象,vars对象.
例如,目前
function index()
{
$this->mvc->config['title'];
$this->mvc->vars['name'];
}
Run Code Online (Sandbox Code Playgroud)
**我想要的更直接**
function index()
{
$this->config['title'];
$this->vars['name'];
}
Run Code Online (Sandbox Code Playgroud)
我试过了
function __construct($mvc)
{
$this = $mvc;
}
Run Code Online (Sandbox Code Playgroud)
要么
function __construct($mvc)
{
$this = clone $mvc;
}
Run Code Online (Sandbox Code Playgroud)
它不成功.任何想法,我可以关闭$ this-> mvc到$这个级别?我尝试foreach也没有成功.请帮忙,谢谢!
一个优雅的解决方案是覆盖__get():
public function __get($name) {
return $this->mvc->$name;
}
Run Code Online (Sandbox Code Playgroud)
__get()只要您尝试访问类的不存在的属性,就会调用它.这样,您就不必复制类中的每个属性mvc(这可能会覆盖类中的属性).如果需要,您还可以检查是否$name存在mvc用property_exists.