1
define('EMPTY', '');
if(!empty(EMPTY))
{
if(!(boolean) _CONSTANT)
{
    print "One";
}
}

上記のコードは、次のエラー メッセージを生成します。

「解析エラー: 3 行目の C:\Users\Robert\Documents\web development\xampp\htdocs\xampp\web_development\index.php に構文エラー、予期しない 'EMPTY' (T_EMPTY) があります」

PHPマニュアルのどこにも、「EMPTY」がトークンであると明示的に述べられておらず、この落とし穴について通知されていません。

4

3 に答える 3

3

()トークンが関数宣言か定数宣言かを判断するためにPHP が使用する関数と同じ名前の定数を宣言できます。

<?php
function myfunc() {
 echo "inside myfunc()\n";
}
define('str_replace', 'my string');
echo str_replace . "\n";
echo str_replace("A", "B", "AAAA") . "\n";
define('myfunc', 'this is myfunc constant');
echo myfunc . "\n";
myfunc();

/*
Output:
my string
BBBB
this is myfunc constant
inside myfunc()
 */

言語構造emptyであるため、これは機能しません。empty

于 2013-01-14T02:58:47.103 に答える
0

これは問題ではありません...定数に別の名前を付けてください。

必要に応じて、ドキュメンテーション バグ レポート を送信できます。

于 2013-01-14T02:45:14.167 に答える
-1

関数名は大文字と小文字を区別しません。

$state = constant('EMPTY');
if (!empty($state)) {
于 2013-01-14T02:46:51.793 に答える