双美元符号php

Sla*_*vic 10 php syntax

可能重复:
PHP(美元或双美元)在PHP中意味着什么?

我发现自己在我的一个控制器中使用了这种代码:

foreach(get_object_vars($this->view) as $property=>$value){
   $$property = $value;
}
Run Code Online (Sandbox Code Playgroud)

使用$$属性将视图属性"本地化"为简单的$变量是否有任何问题?

编辑:

我应该补充一点,这个代码是在特定于视图的方法的范围内运行的,因此没有覆盖局部变量的问题.这是为了转移你们中的一些人指出覆盖局部变量的问题.

Eri*_*rik 17

PHP中$$的问题在于您创建了未知的变量名称,这可能会覆盖您已使用的变量名称.它是细微编程错误的来源,通常不应使用.

  • 我不同意这个答案.如果您在View对象中使用它,那么您的范围有限.如果您总是在全局范围内工作,那么$$只是一个问题,如果您使用的是MVC结构,那么您不会这样做.如果您的View对象确实需要一些您不想覆盖的"保留"变量,请将其命名为`$ _var`,这样您就不会意外地覆盖它. (4认同)

Cro*_*zin 5

好吧,你可以使用extract()功能.此片段:get_object_vars($this->view)表示您应该使用一些数组来存储这些变量,而不是对象.