PHPで二重引用符で囲まれた静的変数を評価するにはどうすればよいですか?二重引用符で囲まれたPHP静的変数
は、私はこのような何かをしたい:
log("self::$CLASS $METHOD entering");
は私が自己:: $クラスの変数の値を取得するには、{}コンボのすべての種類を試してみたが、何も働いていません。私は現在、文字列の連結と和解しましたが、タイプする痛みです:
log(self::$CLASS . " $METHOD entering");
PHPで二重引用符で囲まれた静的変数を評価するにはどうすればよいですか?二重引用符で囲まれたPHP静的変数
は、私はこのような何かをしたい:
log("self::$CLASS $METHOD entering");
は私が自己:: $クラスの変数の値を取得するには、{}コンボのすべての種類を試してみたが、何も働いていません。私は現在、文字列の連結と和解しましたが、タイプする痛みです:
log(self::$CLASS . " $METHOD entering");
私はあなたの質問への答えを知らないが、あなたが__METHOD__
magic constantを使用して、クラス名とメソッドを表示することができます。
感謝。これは役に立ちました。私はJavaから移行しており、魔法の定数を掘り下げる機会はありませんでした。クラスとメソッドの変数を定義する代わりに、これらを使用します。 – Chris
ジャスト連結と一緒に住んでいます。 You'd be surprised how inefficient variable interpolation in strings can be。
そして、これは、最適化前またはマイクロ最適化の傘の下に落ちる可能性がありながら、私はちょうどあなたが実際にこの例では、任意の優雅さを得るとは思いません。
個人的に、私はつもりが1つまたは他の小さな最適化を行うことだし、私の選択肢は「速く」および「タイプしやすい」であれば - 私は「より速く」を選択つもりです。あなたはそれを数回だけタイプするので、おそらく何千回も実行するでしょう。
はい、これは行うことができます。
log("{${self::$CLASS}} $METHOD entering");
はい、許可されていますが、目的の効果が得られません。これは 'self :: $ CLASS'を変数名として扱います。 'self :: $ CLASS == 'foo''なら、あなたが期待しているように、' {foo} 'で終わって、' 'foo''で終わらないでしょう。 –
は、残念ながらまだこれを行うにはどのように方法はありません。 {${self::$CLASS}}
はself::$CLASS
のコンテンツを返しませんが、self::$CLASS
には名前の変数の内容を返しますので、ここでの回答の例は機能しません。ここで
はない戻っmyvar
、しかしaaa
ない例です:
$myvar = 'aaa';
self::$CLASS = 'myvar';
echo "{${self::$CLASS}}";
ログ(自己:: $クラス "の$ METHOD入りを"); は、log( "self :: $ CLASS $ METHOD entered")の代わりに1つの余分な文字を入力します。 ..これは痛みですか? –
それはそれほど悪くはありませんが、もう1つは読みやすくタイプするほうがはるかに簡単です。 :)あなたが最適化に関心がなければ、代替案があるかどうか疑問に思っていました。 – Chris
@Scott:落胆は答えではありません – cmc