【发布时间】:2017-05-16 03:59:18
【问题描述】:
这是致命错误:
致命错误:常量表达式包含无效操作
我在这段代码中遇到了一个致命错误:
<?php
class InfoClass {
private $user_agent = $_SERVER['HTTP_USER_AGENT']; // error is on this line
public static function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
...
}
我正在使用 php 7。为什么会显示此错误?谢谢
【问题讨论】:
-
因为
$_SERVER['HTTP_USER_AGENT'];是“运行时”信息;和类属性declaration may include an initialization, but this initialization must be a constant value -- that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated. -
@MarkBaker 好的,那我该如何解决?
-
您在类构造函数中分配它,并实例化一个对象......而wtf应该是
global $user_agent;?它是否应该作为参数传递给方法? -
@MarkBaker 我不知道,我从这篇文章中得到这个:stackoverflow.com/a/18070424/4357238
-
问题是当 PHP 执行该行时常量没有值。要解决它,您可以将变量初始化为空字符串,然后在方法内为其分配一个值。然而,这段代码是糟糕的设计。或许您应该尝试重组流程。
标签: php function class error-handling fatal-error