【问题标题】:Can a variable named as `$something` be referred to by `someting`, that is without the dollar sign?一个名为 `$something` 的变量是否可以被 `someting` 引用,即没有美元符号?
【发布时间】:2015-04-18 15:28:28
【问题描述】:

我正在检查其他人编写的一些 PHP 代码,他们基本上将变量命名为 $text

protected $text = null;

然后在同一个文件中,他们在没有$ 符号的情况下引用它:

$this->text[$name] = new Text($age, $house);
  1. 我有点好奇。这甚至可能吗?变量可以命名吗 $ 与某个单词连接,仅与 $以外的标识符的一部分?
  2. 如果是,它是否意味着一些特殊的东西,或者它是一个简单的参考 变量?

PS:我不认为代码有问题,因为它可以工作=s

【问题讨论】:

  • $text 不是变量,它是类属性。使用$var->propertyname 访问属性。
  • @Barmar 谢谢,但这是否意味着我们总是必须在没有$ 的情况下访问它们,或者它可以是$var->propertyname$var->$propertyname
  • $var->$propertyname means to use the value of $propertyname` 作为属性的名称,例如$propertyname = "text"; $this->$propertyname = "foo"; 等价于 $this->text = "foo";。请阅读 PHP 手册中关于 OO 编程的部分。

标签: php variable-names


【解决方案1】:

这段代码没有错误,因为它是用面向对象的 PHP 编写的。 当您在 php 对象中声明属性时,在这种情况下为 $text,您稍后可以在同一类中将该属性称为 $this->text

【讨论】:

    【解决方案2】:

    这就是您在面向对象代码中访问变量(通常称为属性)的方式。

    class MyClass {
        public $name = 'Billy Bob';
        public function printName() {
            echo $this->name;
        }
    }
    

    在本例中,$this->name 指的是$name 变量,属于类的“this”实例(类的实例称为对象)。

    class MyClass { /* ... */ } // This is a class definition
    $obj = new MyClass();       // This is an instance of the class, an object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-01
      • 2011-12-17
      • 2010-10-17
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多