使用串联在 PHP 类中启动/声明常量
class Foo
{
const MY_CONST = 'this is ' . 'data' ; //use of concatenation
public function __construct() {}
}
这给出了错误:
语法错误,意外的“.”, 期待 ',' 或 ';'
那么我应该如何使用常量连接呢?
class Foo
{
const MY_CONST = 'this is ' . 'data' ; //use of concatenation
public function __construct() {}
}
This gives error :
syntax error, unexpected '.',
expecting ',' or ';'
Then how I am supposed to use concatenation with constants?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能在那里分配表达式。您只能在类定义中定义普通值。
这里唯一的解决方法是使用
runkit_constant_add()< /code>
在构造函数中,这并非在所有 PHP 设置中都可用。
You cannot assign expressions there. You can only define plain values in a class definition.
The only workaround here would be to use
runkit_constant_add()
in the constructor, which is not available on all PHP setups.常量,应该是常量,这就是为什么你不能在这里使用表达式。
我不建议您使用 runkit_constant_add() ,因为它会转换变量(或某种变量)中的常量,但事实并非如此,并且可能会造成混淆。
为了解决这个问题,我通常将常量“包装”在受保护的数组中。
使用常量作为数组的键,以获得更复杂的表达式。
并让你使用:
Constants, should be, constants, it's why you can't work with expression here.
I don't advise you the
runkit_constant_add()
as it transforms a constant in a variable (or kind of) which is not the case and can be confusing.To resolve this issue, I usually "wrap" my constant in a protected array.
Use the constant to be used a key of an array, to have more complex expressions.
And let you use: