根据http://php.net/manual/en/functions.user-defined.php,我应该能够使用下划线(_)作为函数名称:
函数名称遵循与PHP中其他标签相同的规则。一个有效的 函数名称以字母或下划线开头,后跟任何字符 字母,数字或下划线的数量。作为正则表达式, 它将如此表达:[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *。
但是,以下命令会导致我的程序失败而不会导致任何错误:
error_reporting(E_ALL);
echo('start');
function _($x){return ($x)?htmlspecialchars($x):'nbsp;';}
echo('end');
我使用的是PHP版本5.3.18。我不明白的是什么?
答案 0 :(得分:14)
已经有一个名为_
的内置函数;它是gettext
的别名。
您可能会收到Fatal error: Cannot redeclare _()
,但可能无法将错误输出到您的屏幕,具体取决于您display_errors
的设置。您还可以查看log_errors
指令。
答案 1 :(得分:3)
正如cbuckley所说,已经定义了名为gettext
的{{1}}别名。如果您启用了gettext,则会使用_
名称。
最好使用双下划线(_
)。我经常使用它。或者你禁用了gettext。