当前位置: 首页 > 面试题库 >

常量表达式包含无效的操作

葛成济
2023-03-14
问题内容

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

<?php

namespace App;

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

    public function __construct()
    {
    }

}

我已经看到了这个问题:PHP错误:致命错误:常量表达式包含无效的操作,但是我的代码未将任何内容声明为静态,因此无法回答我的问题。


问题答案:

如上所述这里

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

使这项工作唯一的方法是:-

<?php

namespace App;

class Amazon
{
  protected $serviceURL;

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


 类似资料:
  • 问题内容: 我收到一个错误: 致命错误:常量表达式在第214行的config.php中包含无效操作 那行是: 我是否在报价中犯了任何错误?或者别的地方? 我对错误消息的搜索仅显示了不同的原因(函数定义中的动态默认值)。 问题答案: 从 官方的PHP文档: 像任何其他PHP静态变量一样,静态属性只能在PHP 5.6之前使用文字或常量进行初始化。不允许使用表达式。在PHP 5.6和更高版本中,相同的规

  • 我试图调试一个旧的jsp站点,所以我在运行Windows7的本地机器上安装了tomcat 7和Netbean IDE 7.2.1,并设置了一切。但是当我运行它时,我得到一个错误: SEVERE: Servlet.service()为servlet jsp抛出异常org.apache.jasper.JasperExcture: /pages/caselisting.jsp(行: 133,列: 35)

  • 常量表达式机制是为了: 提供一种更加通用的常量表达式 允许用户自定义的类型成为常量表达式 提供了一种保证在编译期完成初始化的方法(可以在编译时期执行某些函数调用) 考虑下面这段代码: enum Flags { good=0, fail=1, bad=2, eof=4 }; constexpr int operator|(Flags f1, Flags f2) { return Flags(int(

  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

  • 我发现正则表达式不包含101,如下所示: 0*1*0*(1 00 000)*(010)* 我无法理解作者是如何想出这个正则表达式的。所以我只想到了不包含101的字符串: 01000100 我似乎上面的字符串不会与上面的正则表达式匹配。但我不确定。所以尝试在regex101.com上翻译成等效的pcre正则表达式,但也失败了(因为可以看到我的正则表达式甚至不匹配包含单个1的字符串。 我的翻译有什么问

  • 我正在尝试查找我的字符哈希表是否包含字符串的第一个字符: 但由于某种原因我得到了这个错误。这对我来说没有任何意义。有人有什么想法吗? 我切断了长错误消息的其余部分。