Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ')', ожидание: (T PAAMAYIM NEKUDOTAYIM) [дубликат]
На этот вопрос уже есть ответ здесь:
Ссылка-что означает эта ошибка в PHP?
30 ответов
У меня есть следующий код
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Можно преобразовать константу в логическое значение:
if((boolean) A) { }Итак, вы можете изменить свой код на:
<?php define("SCRIPT_URL", ""); function ifScriptFolder() { if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) { echo "/".SCRIPT_URL."/"; } else { echo "/"; } }
Comments