dlc*_*ers 4 php const curly-braces
PHP支持这个:
$z = 5;
$str = "z is $z"; // result: "z is 5"
Run Code Online (Sandbox Code Playgroud)
它支持这个:
$c = new StdClass();
$c->x = 9;
$str = "x is {$c->x}"; // result: "x is 9"
Run Code Online (Sandbox Code Playgroud)
但它不支持这个:
class abc
{
const n = 2;
}
$str = "x is {abc::n}"; // result: "x is {abc::n}"
Run Code Online (Sandbox Code Playgroud)
为什么PHP 不支持通过大括号语法插入consts?好像应该......
卷曲语法是扩展变量语法.它用于将变量插入字符串.而在PHP变量中,$其他所有内容都会产生语法错误.
但你可以做的是调用变量函数.因此你可以这样做:
$_ = function ($expr) { return $expr; };
echo "Something {$_(Class::Constant)}";
Run Code Online (Sandbox Code Playgroud)
但这是一个通常不合适的黑客攻击.请使用字符串连接:
echo 'Something ' . Class::Constant;
Run Code Online (Sandbox Code Playgroud)