/gibi bir değişken değiştirin:
$this->{$var}
bağlam CI datamapper olsun kurallarla olduğunu. Bu sözdiziminin gerçekte ne yaptığını göremiyorum. Bu bağlamda ne yapıyor? Neden sadece değil: yalnızca:
$this->var
Teşekkürler!
/gibi bir değişken değiştirin:
$this->{$var}
bağlam CI datamapper olsun kurallarla olduğunu. Bu sözdiziminin gerçekte ne yaptığını göremiyorum. Bu bağlamda ne yapıyor? Neden sadece değil: yalnızca:
$this->var
Teşekkürler!
değişken değişkeni, $this->{value-of-$val}
ile biten bittir.
bakınız: örneğin Yani http://php.net/manual/en/language.variables.variable.php
:
$this->a = "hello";
$this->b = "hi";
$this->val = "howdy";
$val = "a";
echo $this->{$val}; // outputs "hello"
$val = "b";
echo $this->{$val}; // outputs "hi"
echo $this->val; // outputs "howdy"
echo $this->{"val"}; // also outputs "howdy"
Çalışma örneği: tabii
Bu bir sınıf kapsamında çalışmaktadır http://3v4l.org/QNds9. Böyle aynı kolaylıkla yerel bağlamda değişken değişkenler kullanabilirsiniz:
$a = "hello";
$b = "hi";
$val = "a";
echo $$val; // outputs "hello"
$val = "b";
echo $$val; // outputs "hi"
Çalışma örneği: $this->{$var}
ve $this->var
hepsi iki ayrı şeydir ait http://3v4l.org/n16sk
İlk. İkincisi var
sınıf değişkenini, diğeri ise $var
dizgesinde bulunan değişkenin adını talep edecektir. $var
'foo'
dizesi ise, $this->foo
ve benzeri istekte bulunacaktır.
Bu, dinamik programlama (yalnızca çalışma zamanında değişkenin adını biliyorsanız) için kullanışlıdır.
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
değişken adı y - x
çünkü boşluk ve -
karakterinin geçerli olmasa bile Ok
yazdırır: Garip değişken isimleri var özellikle Fakat bir dize bağlamında klasik {}
notasyonu çok güçlüdür.
+1! Değişken isimlerin bu kadar karmaşık olabileceğini asla bilemezdim. Yani, bir dizi/nesneyi değişken adı olarak koyabilir misin? –
@DaveChen, onların dizgi temsili evet. Değişken isimler için bir uzunluk sınırı olduğunu düşünmeme rağmen. Bunun iyi bir uygulama olduğunu düşünmüyorum, bu yüzden bundan kaçınılırım. – Shoe
hmm '$ object-> attr' =' $ object -> {"attr"} ':) –
@DaveChen bu örnekle de cevabımı güncelledim – jszobody
Başladığım zamanı hatırlıyorum; $ this -> $ val' ve sefil başarısız oldu. Bu cevabı görmek güzel. –