7

根据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。我不明白什么?

4

2 回答 2

16

_已经有一个名为;的内置函数。它是gettext.

您可能会得到一个Fatal error: Cannot redeclare _(),但根据您的设置,错误可能不会输出到您的屏幕上display_errors。您还可以查看log_errors指令。

于 2012-12-05T13:08:54.053 回答
4

正如 cbuckley 所说,已经有一个gettext用 name 定义的别名_。如果您启用了 gettext,则使用_名称。

最好使用双下划线 ( __)。我经常使用它。或者你禁用 gettext。

于 2012-12-05T13:10:00.733 回答