解析错误:语法错误,意外的“)”,预期 :: (T_PAAMAYIM_NEKUDOTAYIM)

2022-08-30 22:17:46

我有以下代码

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

但它给了我以下错误:

Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in *(path)* on line 3

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


答案 1

如果尝试确定常量是否存在,请尝试使用 defined()constant(),而不是 isset()。


php.net

函数定义()

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

函数常量()

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


固定功能:

function ifScriptFolder() {
    echo defined('SCRIPT_URL') ? "/" . constant('SCRIPT_URL') . "/" : "/"
}

UPD:

该函数是更好的解决方案,因为如果未定义常量,则不会发出该函数。defined()E_WARNING


答案 2

PHP常量不是变量,所以你不使用或检查它们。issetempty

相反,您可以使用定义的

defined('SCRIPT_URL')

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

还值得注意的是(供将来参考),isset不是常规函数;它是一个“语言结构”,不能用于变量以外的任何东西(即不能用于函数的返回值)。与一样,直到 PHP 5.5。


推荐