我有字符串
$name = 'user';
$run->{$name};
我有结果通知:
Undefined property: run::$user
我有控制器方法用户,但错误的是我看到字符串ang $ char。
这是一个特殊的字符吗?
答案 0 :(得分:3)
obj->{$foo}
中的字符串为obj->bar
,则 $foo
相当于'bar'
。
有关详细信息,请参阅http://php.net/manual/en/language.variables.variable.php。
如果obj->bar
实际上是方法,则应将其称为obj->bar()
...
因此object->{$foo}()
- 注意括号。
答案 1 :(得分:0)
$run->{$name}
就像你写的$run->user
一样,当你想使用变量值
所以如果$name = 'user';
然后$run->{$name}
将尝试获取名为“user”的属性
答案 2 :(得分:0)
$name = "user";
$run->{$name}();
运行方法user();
答案 3 :(得分:0)
如果你在控制器中有一个方法(你在$run
中捕获了一个实例),你可以使用:
$run->$name();
答案 4 :(得分:0)
请参阅variable variables当只有部分字符串是变量名称且PHP会错误地解释它时,需要括号。在所有其他情况下,它们是可选的,并且为了更好的可读性而放置(与表达式中使用()括号相同的方式)。由于您指的是方法而不是属性,因此必须使用()。即使不使用变量变量也是如此:
$foo->user // access to property
$foo->user() // method call