常量表达式在访问env值Laravel时包含无效操作错误

时间:2019-01-21 11:14:49

标签: php laravel static

我的项目有问题。我想在私有静态变量中访问我的env值数据,但发现错误Constant expression contains invalid operations。不知道该如何解决。 这是我的代码

private static $session_link = [
    'local' => env('LOCAL_URL'),
    'production' => env('PRODUCTION_URL')
];

预先感谢

1 个答案:

答案 0 :(得分:0)

不可能编写这样的代码。如here所述:

  

此声明可能包含初始化,但这   初始化必须是一个常量值-也就是说,它必须能够   在编译时进行评估,并且不得依赖于运行时   信息以便进行评估。

完成这项工作的唯一方法是:

private static $session_link = [];

public function __construct()
{
    self::session_link = [
        'local' => env('LOCAL_URL'),
        'production' => env('PRODUCTION_URL')
    ]; 
}

TL; DR:

之所以发生这种情况,是因为PHP两次运行您的代码:首先,它正在运行以编译代码,读取所有方法和属性,并且仅在第二次运行以运行编译的代码之后。在编译过程中,PHP不了解env()函数,这就是为什么它抛出\Error的原因。