php dinamik sınıf özellik $ $ değer

6 Cevap php

Nasıl ben sadece bir dize bilerek bir sınıf özelliği başvuruda bulunabilir?

class Foo
{
    public $bar;

    public function TestFoobar()
    {
        $this->foobar('bar');
    }

    public function foobar($string)
    {
         echo $this->$$string; //doesn't work
    }
}

dize eval doğru yolu nedir?

6 Cevap

Bir dize değişkeni kullanarak bir nesnenin üye değişkeni başvururken sadece tek bir $ kullanmanız gerekir.

echo $this->$string;

Eğer bir özelliğin adını elde etmek için bir özellik değeri kullanmak istiyorsanız, "{" parantez kullanmak gerekir:

$this->{$this->myvar} = $value;

Onlar nesneler olsanız bile, onlar işe:

$this->{$this->myobjname}->somemethod();

Diğerleri de söylediğim gibi, $ this-> $ string hile yapmak gerekir.

this->$$string;

aslında dize değerlendirmek, ve yine bunun sonucunu değerlendirecek.

$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'

Eğer çok yakın. Eğer sadece 1 $ ekstra işareti ekledi.

public function foobar($string)
{
     echo $this->$string; //will work
}
echo $this->$string; //should work

Bir dize depolanan sadece adı olan bir yerel değişken erişirken sadece $$string gerekir. Normal bir sınıfta sizin gibi erişmek beri $obj->property, sadece bir tane eklemeniz gerekir $.

Yazımları hatırlamak, normalde kullandığınız daha $ daha fazla kullanmak akılda almak. Eğer bir nesne özelliğine erişmek için $object->property kullanmak gibi, daha sonra dinamik erişim $object->$property_name ile yapılır.