4

PHPはこれをサポートしています:

$z = 5;
$str = "z is $z";  // result: "z is 5"

そしてそれはこれをサポートします:

$c = new StdClass();
$c->x = 9;
$str = "x is {$c->x}";  // result: "x is 9"

ただし、これはサポートされていません。

class abc
{
   const n = 2;
}
$str = "x is {abc::n}";  // result: "x is {abc::n}"

PHPが中括弧構文による const の挿入をサポートしないのはなぜですか? そうあるべきだと思われる...

4

1 に答える 1

7

カーリー構文は拡張変数構文です。変数を文字列に補間するために使用されます。また、PHP 変数のように、他のすべてで始まる変数$は構文エラーを引き起こします。

しかし、できることは、変数関数を呼び出すことです。したがって、次のことができます。

$_ = function ($expr) { return $expr; };

echo "Something {$_(Class::Constant)}";

しかし、それは通常適切ではないハックです。代わりに、文字列連結を使用してください:

echo 'Something ' . Class::Constant;
于 2010-10-29T15:41:39.777 に答える