Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ')', ожидание: (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

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

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

вы можете преобразовать постоянный в boolean:

if((boolean) A) {
}

Так, вы можете изменить свой код:

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