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

PHP错误:致命错误:常量表达式包含无效操作

许嘉福
2023-03-14
问题内容

我收到一个错误:

致命错误:常量表达式在第214行的config.php中包含无效操作

那行是:

 protected static $dbname = 'mydb_'.$appdata['id'];

我是否在报价中犯了任何错误?或者别的地方?

我对错误消息的搜索仅显示了不同的原因(函数定义中的动态默认值)。


问题答案:

从 官方的PHP文档

像任何其他PHP静态变量一样,静态属性只能在PHP 5.6之前使用文字或常量进行初始化。不允许使用表达式。在PHP
5.6和更高版本中,相同的规则与const表达式适用:某些有限的表达式是可能的,只要它们可以在编译时求值即可。

因此,您不能使用另一个变量来初始化静态变量。用$appdata['id']常量字符串替换或删除static属性。

这是因为 所有其他静态声明都是在编译时解析的,而其他变量的内容是未知的。



 类似资料:
  • 问题内容: 我有以下代码,出现错误“ PHP致命错误:常量表达式包含无效操作”。当我在构造函数中定义变量时,它可以正常工作。我正在使用Laravel框架。 我已经看到了这个问题:PHP错误:致命错误:常量表达式包含无效的操作,但是我的代码未将任何内容声明为静态,因此无法回答我的问题。 问题答案: 如上所述这里 类成员变量称为“属性”。您可能还会看到使用其他术语(例如“属性”或“字段”)来引用它们,

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

  • 在我自制的PHP MVC框架中,我编写了一个小错误处理程序,它将PHP错误包装在异常中,然后抛出它。 然后使用注册。除了致命的错误(没有双关语)之外,这一切都很好。我的自定义错误处理程序仍被调用,但我无法捕获抛出的。 这种错误的一个例子是试图包含一个不存在的文件: 调用我的自定义错误处理程序并抛出异常,但代码永远不会到达“catch”块。相反,PHP会生成HTML(糟糕!): 警告:未捕获异常“E

  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 我有一个网站,在我的本地主机与xampp完美地工作,但。。。我把它上传到了一些免费的网站(000webhost和hostinger),当我试图打开它时,收到了以下消息: 警告:require(core/libs/smarty/smarty.class.php):无法打开流:在/home/u327900732/public_html/www/index中没有这样的文件或目录。php在线7 致命错误:

  • 我有以下代码: 这会导致错误: 但是,在以下情况下(其中三元表达式中的括号已被删除): 没有错误,欢迎消息显示正确。 为什么会这样呢?在我的印象中,括号在三元表达式中是可选的。我认为这与求值的顺序有关,但是由于三元表达式在不同的行上,所以< code>let person = {...,我不清楚为什么会发生这种情况。 事实上,在我正在学习的JavaScript课程中,教师展示了下面的例子,无论有没