Çift tırnak PHP statik değişkenler

5 Cevap php

Nasıl PHP çift tırnak içinde bir statik değişkeni değerlendirmek için alabilirim?

Ben böyle bir şey yapmak istiyorum:

log("self::$CLASS $METHOD entering");

Ben self :: $ CLASS değişken değerini almak için {} tarak her türlü denedim, ama hiçbir şey çalıştı. Şu anda dize değiştirgelidir yerleşti ettik ama tip bir ağrı:

log(self::$CLASS . " $METHOD entering");

5 Cevap

Üzgünüz, bunu yapamam. Bu yalnızca basit ifadeler için çalışıyor. Bkz here.

Ben sorunuzun cevabını bilmiyorum, ama __METHOD__ magic constant kullanarak sınıf adı ve yöntemi gösterebilir.

Sadece birleştirme ile yaşamak. You'd be surprised how inefficient variable interpolation in strings can be.

Bu ön-optimizasyon veya mikro-optimizasyonu şemsiyesi altında düşebilir ederken, ben sadece bu örnekte aslında herhangi bir şıklık elde sanmıyorum.

Şahsen, ben yapacağım eğer bir ya da diğer küçük bir optimizasyon yapmak, ve benim seçimler "hızlı" ve "yazın daha kolay" - ı olacak "hızlı" seçiniz değilim. Eğer sadece bunu birkaç kez yazın, çünkü, ama muhtemelen binlerce kez çalıştırmak için gidiyor.

Ne yazık ki henüz bu nasıl bir yolu yoktur. Burada cevaplar biri Örnek, çalışmaz, çünkü self::$CLASS in {${self::$CLASS}} olmaz döner içerik, ancak isim ile değişken getirileri içeriği self::$CLASS.

İşte bir örnek, hangi etmez döner myvar, ama aaa:

$myvar = 'aaa';
self::$CLASS = 'myvar';
echo "{${self::$CLASS}}";

Evet bu yapılabilir:

log("{${self::$CLASS}} $METHOD entering");