私はこの2種類のコードの間に混乱があり、知りたいのですが、それらの違いは何ですか。
$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;
2つ目は、通常のプロパティアクセスです。
私はあなたにこれを説明します、このコードを見てください:
<?php
$var1->"hello";
$var2->$var1;
?>
print または echo を実行すると、$var1 には "hello" が表示されますが、$var1 と $var2 は同じであるため、$var2 には再び "hello" が表示されます。
2 番目のコードでは:
<?php
$var1->"hello";
$var2->"var1";
?>
ここで $vare1 を出力すると "hello" と表示されますが、$var2 には "var1" と表示されます。これが問題の解決に役立つことを願っています。