PHP 7, Fatal error: Constant expression contains invalid operations

PHP 7, Fatal error: Constant expression contains invalid operations

我正在为我正在为学校项目设计的网站构建登录序列 MySQLPHP7(我比较陌生)。我需要一些帮助来理解此错误的含义以及如何解决该问题:

Fatal error: Constant expression contains invalid operations in C:\Abyss Web Server\htdocs\login_tools.php on line 19

下面是确保登录成功并检索相关用户详细信息的函数代码行:

function validate($dbc, $email=",$pwd=")

从您发布的代码行可以看出,您在函数声明中使用了一个双引号。如果你仔细观察,你会发现 ,pwd=" 都是红色的,因为 $email=

之后的单双引号

将双引号更改为 2 个单引号或添加另一个双引号。

function validate($dbc, $email='',$pwd='')

function validate($dbc, $email="",$pwd="")

我认为对此错误消息的解释很有价值,因为它是 PHP 的新内容 7 - 为了清楚起见,让我们重新构造它:

<?php

function validate($dbc, $email="$foo"){
}

?>

作为初学者,您可能会发现 PHP 5.6 的错误消息对调试更有帮助:

PHP Parse error: syntax error, unexpected '"' in /home/hpierce/test.php on line 3

但是 PHP 7 显示了您发现的错误:

Fatal error: Constant expression contains invalid operations in /home/hpierce/test.php on line 3

当您声明一个可选参数时,就像您在 $email 中所做的那样,您需要提供一个字面值("constant expression")单独而不需要评估(通过使用 "invalid operations" 确定)。通过包含对 $foo 的引用,您已经使用此处无效的动态表达式声明了可选参数。

提供常量表达式的例子:

//Providing an integer literal
function validate($dbc, $email=1){}

//Providing a string literal
function validate2($dbc, $email="foo"){}

//Providing an array literal
function validate3($dbc, $email=Array("foo", "bar")){}

这个规则适用于任何需要定义常量表达式的情况,比如添加一个class常量:

<?php

class Foo
{
    //Fatal error: Constant expression contains invalid operations
    const BAR = $bar;
}

?>