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_errorslog_errorsディレクティブを確認することもできます。

于 2012-12-05T13:08:54.053 に答える
4

cbuckleyが言ったように、gettext名前で定義されたエイリアスはすでに存在します_。gettextが有効になっている場合は、_名前が使用されます。

二重下線(__)を使用することをお勧めします。よく使います。または、gettextを無効にします。

于 2012-12-05T13:10:00.733 に答える