Php 带有$$的CodeIgniter访问模型失败

Php 带有$$的CodeIgniter访问模型失败,php,codeigniter,variable-variables,Php,Codeigniter,Variable Variables,我在CodeIgniter中有一个名为Treatment的模型。我想“动态”加载和使用此模型。也就是说,我不想直接用名字来调用它(我试图概括一些代码,以使用我告诉它的任何模型) 因此,我这样做: $namespace = 'blah'; $modelName = 'Treatment'; ... $this->load->model($namespace . '/' . $modelName); $this->model = $this->$$modelName; 但是

我在CodeIgniter中有一个名为
Treatment
的模型。我想“动态”加载和使用此模型。也就是说,我不想直接用名字来调用它(我试图概括一些代码,以使用我告诉它的任何模型)

因此,我这样做:

$namespace = 'blah';
$modelName = 'Treatment';
...
$this->load->model($namespace . '/' . $modelName);
$this->model = $this->$$modelName;
但是,我在访问
$this->$$modelName
变量时出错,表示变量“Treatment”未定义:

Undefined variable: Treatment ... Fatal error:  Cannot access empty
property in /mydir/application/controllers/rest/base_rest.php on line
202.
其中,line
202
是我使用
$this->$$modelName
变量的行

现在,如果我将第202行更改为:

$this->model = $this->Treatment;
它很好用


有人知道为什么我不能在这里使用PHP
$$
语法吗?

你不能,因为它不是受支持的语法。试一试

$this->{$modelName}
相反。e、 g

php > class foo { public $bar = 42; }
php > $x = new foo();
php > $y = 'bar';
php > echo $x->$$y;
PHP Notice:  Undefined variable: bar in php shell code on line 1
PHP Fatal error:  Cannot access empty property in php shell code on line 1
php > echo $x->{$y};
42php >

常规:
$this->Treatment
。变量:
$this->$modelName
?:
$this->$$modelName
$$
PHP
中的语法。我不知道以我现在的方式引用变量时有不同的语法风格(尽管现在查看一下,文档在示例1:S中有这样的内容)。是的,它正在寻找名为
$Treatment
的变量,然后将其值用作对象属性名。工作得非常好!谢谢@Marc!我会接受你的回答,所以让我(从现在起大约10分钟)。