Я думаю, что объяснение этого сообщения об ошибке является ценным, так как это новое для 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
, вам необходимо предоставить буквальное значение («постоянное выражение»), которое стоит отдельно, без необходимости оценки (определяется с помощью «недопустимые операции»). Включив ссылку на $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;
}
?>
Заменить каждую двойные кавычки с двумя одинарные кавычки. –
Использование $ dbc, $ email = '', $ pwd = '' с двумя одинарными кавычками вместо двойных кавычек устраняет проблему. Большое спасибо за вашу помощь :) –
FYI, причина, по которой вы получаете это конкретное сообщение об ошибке, состоит в том, что '', $ pwd = "' является интерполированной строкой, эквивалентной '", ". $ pwd. "=" '. Поскольку это динамическое выражение, оно не может использоваться как значение по умолчанию. – NikiC