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

时间:2013-09-18 04:01:41

标签: php function constants

我有以下代码

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

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

3 个答案:

答案 0 :(得分:11)

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


来自php.net

功能 defined()

  

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

功能 constant()

  

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


固定功能:

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

<强> UPD:

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

答案 1 :(得分:5)

PHP constants不是变量,因此您不能使用issetempty来检查它们。

相反,您可以使用defined

defined('SCRIPT_URL')

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

值得注意的是(以后参考)isset不是常规函数;它是一种“语言结构”,不能用于除变量之外的任何东西(即不能用于函数的返回值)。在PHP 5.5之前与empty相同。

答案 2 :(得分:3)

如果您想查看变量是否存在,请使用isset()defined()仅适用于常量。

如果要检查常量是否为空,则不能使用:

if (empty(B)) // syntax error
if (empty(constant('B'))) // fatal error

您可以将常量转换为布尔值:

if((boolean) A) {
}

因此,您可以将代码更改为:

<?php
define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}
相关问题