常量表达式包含无效操作

我有以下代码,其中我收到错误“PHP致命错误:常量表达式包含无效操作”。当我在构造函数中定义变量时,它工作正常。我正在使用Laravel框架。

<?php

namespace App;

class Amazon
{
    protected $serviceURL = config('api.amazon.service_url');

    public function __construct()
    {
    }

}

我见过这个问题:PHP错误:致命错误:常量表达式包含无效操作,但我的代码没有将任何内容声明为静态,因此没有回答我的问题。


答案 1

如此处所述

类成员变量称为“属性”。您可能还会看到它们使用其他术语(如“属性”或“字段”)引用,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字 public、protected 或 private 之一来定义的,后跟一个普通的变量声明。此声明可能包括初始化,但此初始化必须是常量值,也就是说,它必须能够在编译时进行计算,并且不得依赖于运行时信息才能进行评估。

你可以做到这一点的唯一方法是:-

<?php

namespace App;

class Amazon
{
  protected $serviceURL;

  public function __construct()
  {
    $this->serviceURL = config('api.amazon.service_url');
  }
}

答案 2

不允许以这种方式初始化类属性。必须将初始化移动到构造函数中。


推荐