二重引用符で囲まれた静的変数をPHPに評価させるにはどうすればよいですか?
私はこのようなことをしたい:
log("self::$CLASS $METHOD entering");
{}
の変数値を取得するためにあらゆる種類のコンボを試しましself::$CLASS
たが、何も機能しませんでした。私は現在、文字列連結で解決しましたが、入力するのは面倒です:
log(self::$CLASS . " $METHOD entering");
申し訳ありませんが、それはできません。単純な式でのみ機能します。ここを参照してください。
残念ながら、これを行う方法はまだありません。{${self::$CLASS}}
の内容を返さないため、ここでの回答の 1 つの例は機能しませんがself::$CLASS
、名前が の変数の内容を返しますself::$CLASS
。
myvar
を返さない例を次に示しますaaa
。
$myvar = 'aaa';
self::$CLASS = 'myvar';
echo "{${self::$CLASS}}";
あなたの質問に対する答えはわかりませんが、__METHOD__
マジック定数を使用してクラス名とメソッドを表示できます。
連結と一緒に暮らすだけです。 文字列内の変数の補間がいかに非効率的であるかに驚かれることでしょう。
これは事前最適化またはマイクロ最適化の傘下に入る可能性がありますが、この例で実際に優雅さが得られるとは思いません。
個人的には、どちらか一方を少しだけ最適化するつもりで、私の選択が「より高速」で「入力しやすい」場合は、「より高速」を選択します。数回入力するだけですが、おそらく何千回も実行されるからです。
はい、これを行うことができます:
log("{${self::$CLASS}} $METHOD entering");