常量表达式包含无效操作

e0uiprwp  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(329)

这个问题在这里已经有答案了

php错误:致命错误:常量表达式包含无效操作(4个答案)
去年关门了。
我有以下代码,其中我得到错误“php致命错误:常量表达式包含无效操作”。当我在构造函数中定义变量时,它工作得很好。我使用的是laravel框架。

<?php

namespace App;

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

    public function __construct()
    {
    }

}

我看到这个问题:php错误:致命错误:常量表达式包含无效的操作,但我的代码没有声明任何静态的东西,所以这没有回答我的问题。

dpiehjr4

dpiehjr41#

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

rur96b6h

rur96b6h2#

我使用的另一种工作方法是 boot( ) 拉威尔口若悬河:

<?php

namespace App;

class Amazon {
    protected $serviceURL;

    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model){
            $model->serviceURL = config('api.amazon.service_url');
        });
    } }
az31mfrm

az31mfrm3#

如本文所述
类成员变量称为“属性”。你也可以看到他们提到使用其他术语,如“属性”或“字段”,但为了这个目的,我们将使用“属性”。它们是通过使用关键字public、protected或private中的一个来定义的,后跟一个普通变量声明。这个声明可以包含一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被计算,并且不能依赖于运行时信息才能被计算。
唯一的办法是:-

<?php

namespace App;

class Amazon
{
  protected $serviceURL;

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

相关问题