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


PHP 7, Fatal error: Constant expression contains invalid operations

我正在为一个网站建立一个登录序列,我正在为一个学校项目设计MySQLPHP7(我是相对较新的)。我需要一些帮助来理解这个错误的含义以及如何解决这个问题:

致命错误:常量表达式中包含无效操作C:'Abyss Web Server'htdocs'login_tools.php on line 19

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

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

我认为这个错误信息的解释是有价值的,因为它是PHP 7的新内容-让我们重新定义它:

<?php
function validate($dbc, $email="$foo"){
}
?>

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

PHP解析错误:语法错误,意外的'/home/hpierce/test.php第三行

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

致命错误:常量表达式中包含无效操作/home/hpierce/test.php第三行

当声明一个可选参数时,就像在$email中一样,需要提供一个独立的文字值("常量表达式"),而不需要计算(通过使用"无效操作"确定)。通过包含对$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")){}

此规则适用于任何需要定义常量表达式的情况,例如添加类常量:

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

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

后面有一个双引号

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

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

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