常量表达式包含无效操作[重复]
Posted
技术标签:
【中文标题】常量表达式包含无效操作[重复]【英文标题】:Constant expression contains invalid operations [duplicate] 【发布时间】:2017-04-11 04:55:45 【问题描述】:我有以下代码,其中出现错误“php 致命错误:常量表达式包含无效操作”。当我在构造函数中定义变量时它工作正常。我正在使用 Laravel 框架。
<?php
namespace App;
class Amazon
protected $serviceURL = config('api.amazon.service_url');
public function __construct()
我看过这个问题:PHP Error : Fatal error: Constant expression contains invalid operations 但是我的代码没有将任何东西声明为静态,所以没有回答我的问题。
【问题讨论】:
此时不能使用函数,将其移至构造函数 你需要在construct()函数中分配serviceURL值 【参考方案1】:我使用的另一个可行的替代方法是 boot( )
和 Laravel Eloquent:
<?php
namespace App;
class Amazon
protected $serviceURL;
protected static function boot()
parent::boot();
static::creating(function ($model)
$model->serviceURL = config('api.amazon.service_url');
);
【讨论】:
【参考方案2】:如here所述
类成员变量称为“属性”。您可能还会看到使用“属性”或“字段”等其他术语来提及它们,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字 public、protected 或 private 之一来定义的,然后是一个普通的变量声明。这个声明可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。
您可以完成这项工作的唯一方法是:-
<?php
namespace App;
class Amazon
protected $serviceURL;
public function __construct()
$this->serviceURL = config('api.amazon.service_url');
【讨论】:
【参考方案3】:不允许以这种方式初始化类属性。您必须将初始化移动到构造函数中。
【讨论】:
以上是关于常量表达式包含无效操作[重复]的主要内容,如果未能解决你的问题,请参考以下文章