【问题标题】:PHP Fatal error: Constant expression contains invalid operationsPHP致命错误:常量表达式包含无效操作
【发布时间】: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


【解决方案1】:

改为这样做

<?php

class InfoClass {
    private $user_agent;
    public function __construct(){
        $this->user_agent = $_SERVER['HTTP_USER_AGENT']; // error is on this line
    }

    public static function getOS() { 

    global $user_agent;

    $os_platform = "Unknown OS Platform";

    ...
}

希望对你有帮助

【讨论】:

  • 这对我有帮助:)
  • 对我来说不能工作,因为我会得到一个空值。
猜你喜欢
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 2018-02-24
  • 2020-06-27
  • 2017-04-11
相关资源
最近更新 更多