代码之家  ›  专栏  ›  技术社区  ›  Slavic

双美元符号php

  •  9
  • Slavic  · 技术社区  · 14 年前

    可能重复:
    What does $$ (dollar dollar or double dollar) mean in PHP?

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

    foreach(get_object_vars($this->view) as $property=>$value){
       $$property = $value;
    }
    

    使用$$属性将视图属性“本地化”为简单的$variables有问题吗?

    编辑:

    我要补充的是,这段代码是在特定于视图的方法的作用域中运行的,因此不存在重写局部变量的问题。这是为了转移你们中的一些人,使他们不再指出覆盖局部变量的问题。

    4 回复  |  直到 8 年前
        1
  •  17
  •   Erik    14 年前

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

        2
  •  5
  •   Crozin    14 年前

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

        3
  •  1
  •   Ben    14 年前

    不,这是做这件事的方法,如果我没弄错的话,也是唯一的方法。尽管我的问题是问你为什么要这样做而不是使用对象变量。

        4
  •  -1
  •   Chris Michaelides    11 年前

    接受的答案是如此错误!!! 双美元不是问题的根源,不应该被认为是这样! double-dollar语法实际上是一个极好的PHP特性,在很多情况下都很有用!

    如果您担心使用它可能会重写其他变量,那么这意味着您编写了糟糕的代码!不管怎样,这种语法是由更有经验的程序员使用的,所以初学者应该避免使用它,直到对他们正在做的事情有了更多的把握。

    在某些情况下,这是非常有用的是基于其他变量、动态变量、不可知变量等的值循环变量。

    最后,让我再说一句,双美元是一个强大的功能,应该这样对待!伟大的力量带来伟大的责任!