我对这两种代码感到困惑,想知道它们之间有什么区别:
$object->$lol
// and
$object->lol
$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'
$object->lol
访问对象上命名的实例lol
变量$object
。
$object->$lol
访问名称包含在变量中的实例$lol
变量。它也可以在$object
对象上访问。
AFAIK,它的工作原理与以下相同:
$var = "var2";
$var2 = "hello world";
echo $$var; // This returns "hello world"
因此,我假设 $object->$lol 会为您获取具有 $lol 变量名称的变量。
第一个就像
$lol = 'foo';
$object->{$lol} == $object->foo;
第二个是常规的财产访问。
我会解释给你看,看看这段代码:
<?php
$var1->"hello";
$var2->$var1;
?>
如果我们执行打印或回显,$var1 将显示“hello”,但在 $var2 中我们将再次看到“hello”,因为 $var1 和 $var2 是相同的。
在第二个代码中:
<?php
$var1->"hello";
$var2->"var1";
?>
现在我们打印 $vare1,它会显示“hello”,但 $var2 会显示“var1”。我希望这可以帮助您解决问题。