使用getter和setter间接修改重载属性

时间:2015-08-08 16:02:14

标签: php

我有一个看起来像这样的方法:

public function init(){
    $this->app->classes = [
        'route'       => new Route(),
        'routeParams' => new RouteParams()
    ];

    return $this->app;
}

App中的classes属性如下所示

class App{
    protected $classes = [];
}

我有另一个最终被调用的方法,其中包含这一行:

// Both $val and $item1 are strings
$this->app->classes['routeParams']->$val = $item1;

当我运行它时,我收到此错误:

  

间接修改重载属性App :: $ classes无效

我的RouteParams课程如下:

class RouteParams{

    private $parameters = array();

    public function __get($name){
        if(isset($this->parameters[$name])){
            return $this->parameters[$name];
        }
        return '';
    }

    public function __set($name, $value){
        $this->parameters[$name] = $value;
    }

}

导致我的错误的原因是什么?如何解决?

0 个答案:

没有答案