$ object-> lol和$ object-> $ lol之间的区别

时间:2013-02-11 10:51:18

标签: php

我对这两种代码感到困惑并想知道它们之间有什么区别:

$object->$lol
// and
$object->lol

5 个答案:

答案 0 :(得分:4)

$object->lol将指向对象类中定义的某些属性:

class SomeClass {
    public $lol = 'some value';
}

$object = new SomeClass();
echo $object->lol; //will yield 'some value'

$object->$lol将指向对象类定义的某些属性,但会根据$lol的值访问正确的属性:

class SomeClass {
    public $lol = 'some value';
    public $random = 'random value';
}

$lol = 'random';

$object = new SomeClass();
echo $object->lol; //will yield 'some value'
echo $object->$lol; //will yield 'random value'

答案 1 :(得分:3)

$object->lol访问lol对象上名为$object的实例变量。

$object->$lol访问名称包含在$lol变量中的实例变量。它也可以在$object对象上访问。

答案 2 :(得分:3)

AFAIK,它的工作原理如下:

$var  = "var2";
$var2 = "hello world";
echo $$var; // This returns "hello world"

所以,我假设$ object-> $ lol获取带有$ lol变量名称的变量。

Here is some more info about this...

答案 3 :(得分:2)

第一个就像

$lol = 'foo';
$object->{$lol} == $object->foo;

第二个是定期财产访问。

答案 4 :(得分:1)

我会解释一下,看看这段代码:

<?php
$var1->"hello";
$var2->$var1;
?>

如果我们进行打印或回显$ var1将显示&#34;你好&#34;但是在$ var2中我们会看到&#34;你好&#34;因为$ var1和$ var2是相同的。

在第二个代码中:

<?php
$var1->"hello";
$var2->"var1";
?>

现在我们打印$ vare1,它会显示&#34;你好&#34;但$ var2将显示&#34; var1&#34;。我希望这可以帮助您解决问题。