解析错误:语法错误,意外')',期待::(T_PAAMAYIM_NEKUDOTAYIM)

dpD*_*gnz 16 php constants function

我有以下代码

define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(isset(SCRIPT_URL) && !empty(SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误:

Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in *(path)* on line 3
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到这里出了什么问题或如何解决它?

Bli*_*itZ 11

如果您尝试确定是否存在常量,则尝试使用defined()constant()不使用isset().


来自php.net:

功能 defined():

如果已定义name给出的命名常量,则返回TRUE,否则返回FALSE.

功能 constant():

返回常量的值,如果未定义常量,则返回NULL.


固定功能:

function ifScriptFolder() {
    echo defined('SCRIPT_URL') ? "/" . constant('SCRIPT_URL') . "/" : "/"
}
Run Code Online (Sandbox Code Playgroud)

UPD:

defined()函数是一个更好的解决方案,因为E_WARNING如果未定义常量,它将不会发出.


Nic*_*ole 5

PHP 常量不是变量,因此您不使用issetempty检查它们.

相反,你可以使用defined:

defined('SCRIPT_URL')
Run Code Online (Sandbox Code Playgroud)

如果字段已定义则返回布尔值,如果是,则对值进行标准比较以检查它是否真实.

值得注意的是(未来参考)isset不是常规功能; 它是一个"语言构造",不能用于除变量之外的任何东西(即不能用于函数的返回值).与emptyPHP 5.5 相同.