Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ')', ожидание: (T PAAMAYIM NEKUDOTAYIM) [дубликат]



На этот вопрос уже есть ответ здесь:



У меня есть следующий код



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


Может ли кто-нибудь увидеть, что здесь не так или как это исправить?
600   3  

3 ответов:

Если вы пытаетесь определить, существует ли константа, то попробуйте использовать defined() или constant(), нет isset().


От php.net:

функция defined():

Возвращает TRUE, если была определена именованная константа, заданная по имени, в противном случае FALSE.

функция constant():

Возвращает значение константы, или NULL, если константа не является определенный.


Фиксированная функция:

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

UPD:

Функция defined() является лучшим решением для этого, потому что она не будет излучать E_WARNING, Если константа не была определена.

PHPконстанты не являются переменными, поэтому вы не используете isset или empty для их проверки.

Вместо этого вы можете использовать defined:

defined('SCRIPT_URL')

Чтобы вернуть логическое значение, если поле определено, а затем, если оно определено, выполните стандартное сравнение значения, чтобы проверить, является ли оно истинным.

Также стоит отметить (для дальнейшего использования), что isset это не регулярная функция; это "языковая конструкция" и не может использоваться ни на чем, кроме переменных (т. е. о возвращаемом значении функции). То же самое с empty вплоть до PHP 5.5.

Если вы хотите узнать, существует ли переменная, используйте 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 "/";
    }
}

Comments

    Ничего не найдено.