当初始化静态内联时,“PHP致命错误:常量表达式包含无效操作”?
我想知道那为什么我的静态变量初始化不声明如下工作:当初始化静态内联时,“PHP致命错误:常量表达式包含无效操作”?
function validate()
{
static $timezones = DateTimeZone::listIdentifiers(); // Error here
...
}
与static ...
行生成错误:如果我做了以下
PHP Fatal error: Constant expression contains invalid operations
,虽然,它按预期工作:
function validate()
{
static $timezones = null;
if(!isset($timezones))
{
$timezones = DateTimeZone::listIdentifiers();
}
...
}
所以我有一个解决问题的方法,但我想知道为什么它的fi第一种方法失败?
基于php文档;您不能用另一个非常量表达式或变量初始化静态变量。
,如果你想分配一个值的静态变量此值应该是一个整数,字符串,这意味着等
做过什么,这里是防静电字规则PHP,您到分配一个动态值$时区变量
static $timezones = DateTimeZone::listIdentifiers(); // Error here
检查的详细信息。
http://php.net/manual/en/language.variables.scope.php#language.variables.scope.static
是的,你是对的我应该更清楚 –
啊,你给了我们错误的链接,正确的链接是这一个:http://php.net/manual/en/language.variables.scope.php#language。 variables.scope.static,因为我的示例在函数中显示静态变量,而不是在对象中。常数不是必需的。你可以有一个表达式,但没有函数调用。 –
我正在改变我的答案。 –
请停止标记垃圾信息。你的帖子不可能同时是C++和PHP,这绝对不是你发布的C++代码。你不是新来的;你知道标签是如何工作的。停止随机添加它们。 –
为什么它在错误信息中解释失败。 – zerkms
@KenWhite啊...对不起,这是一个建议的标签,因为我也做了很多C++ ...感谢编辑。 –