1

私はこの2種類のコードの間に混乱があり、知りたいのですが、それらの違いは何ですか。

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

5 に答える 5

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'
于 2013-02-11T10:56:22.870 に答える
3

$object->lollolオブジェクトで指定されたインスタンス変数にアクセスし$objectます。

$object->$lol変数に含まれている名前を持つインスタンス変数にアクセスし$lolます。オブジェクトからもアクセスでき$objectます。

于 2013-02-11T10:56:25.620 に答える
3

AFAIK、それは次のように同じように機能します:

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

したがって、$ object-> $ lolは、$lol変数の名前を持つ変数を取得すると仮定します。

これについてのいくつかのより多くの情報があります...

于 2013-02-11T10:56:36.380 に答える
2

最初のものはのようなものです

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

2つ目は、通常のプロパティアクセスです。

于 2013-02-11T10:54:15.743 に答える
1

私はあなたにこれを説明します、このコードを見てください:

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

print または echo を実行すると、$var1 には "hello" が表示されますが、$var1 と $var2 は同じであるため、$var2 には再び "hello" が表示されます。

2 番目のコードでは:

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

ここで $vare1 を出力すると "hello" と表示されますが、$var2 には "var1" と表示されます。これが問題の解決に役立つことを願っています。

于 2016-01-18T14:51:06.323 に答える