PHPのstatic変数ダブルクォート
質問
してほしいのですがPHPを評価する静的変数をダブルクォート?
もう少し前向きなことをやりたいこのように:
log("self::$CLASS $METHOD entering");
たってあらゆる{}-コンボの変数値を自::$級なものが勤務しています。私は現在、解決の文字列を連結したものでは痛みのタイプ:
log(self::$CLASS . " $METHOD entering");
解決
申し訳ありませんが、あなたがそれを行うことはできません。それだけで単純な式のために動作します。 ここを参照してください。
他のヒント
残念ながらまだこれを行うにはどのように方法はありません。ここでの答えの一つの例は{${self::$CLASS}}
で名前の変数の戻りの内容をself::$CLASS
がself::$CLASS
の内容を返しませんので、動作しますが、意志はありません。
ここmyvar
を返すが、aaa
ない、一例であり、
$myvar = 'aaa';
self::$CLASS = 'myvar';
echo "{${self::$CLASS}}";
わからない、不明な点があれば、ここでお答えができ、クラス名とメソッドを使用 __METHOD__
マジックの定数.
変数に格納された匿名ID機能を使用してください。あなたはすぐに$
後{
ています。この道ます:
$I = function($v) { return $v; };
$interpolated = "Doing {$I(self::FOO)} with {$I(self::BAR)}";
(私はこの例ではクラス定数を使用していますが、これはあまりにも静的変数で動作します)。
ただ、連結と一緒に住んでいます。 あなたはどのように非効率的な変数補間で驚かれることと思います文字列はをすることができます。
これは最適化前またはマイクロ最適化の傘の下に落ちる可能性がありながら、私はちょうどあなたが実際にこの例では、任意の優雅さを得ないと思います。
個人的に、私はつもりが1つまたは他の小さな最適化を行うことだし、私の選択肢は「速く」および「タイプしやすい」であれば - 私は「より速く」を選択つもりです。あなただけのそれを数回入力しますが、おそらく何千回を実行するために起こっているので。
私は、これは古い質問です知っているが、私はそれが奇妙な誰もがまだ[sprintf][1]
機能を示唆していることがわかります。
と言うます:
<?php
class Foo {
public static $a = 'apple';
}
あなたがそれを使用することになります:
echo sprintf( '$a value is %s', Foo::$a );
あなたの例のようにそのます:
log(
sprintf ( ' %s $METHOD entering', self::$CLASS )
);
はい、これは行うことができます:
log("{${self::$CLASS}} $METHOD entering");