文字列だけを知っているクラスプロパティをどのように参照できますか?
class Foo
{
public $bar;
public function TestFoobar()
{
$this->foobar('bar');
}
public function foobar($string)
{
echo $this->$$string; //doesn't work
}
}
文字列を評価する正しい方法は何ですか?
文字列変数を使用してオブジェクトのメンバー変数を参照する場合は、$を1つだけ使用する必要があります。
echo $this->$string;
プロパティの名前を取得するためにプロパティ値を使用する場合は、「{」括弧を使用する必要があります。
$this->{$this->myvar} = $value;
オブジェクトであっても機能します。
$this->{$this->myobjname}->somemethod();
他の人が述べたように、$ this-> $ stringがうまくいくはずです。
しかし、これは
$this->$$string;
実際に文字列を評価し、その結果を再度評価します。
$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'
あなたはとても親しかった。 $記号を1つ追加しました。
public function foobar($string)
{
echo $this->$string; //will work
}
正確な構文を覚えておくために、$
通常使用するよりも多く。 $object->property
を使用してオブジェクトプロパティにアクセスし、動的アクセスは$object->$property_name
。
echo $this->$string; //should work
$$string
が必要なのは、名前のみが文字列に格納されているローカル変数にアクセスする場合のみです。通常、クラスでは$obj->property
のようにアクセスするため、$
を1つ追加するだけで済みます。