Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ')', ожидание: (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
вы можете преобразовать постоянный в boolean:
if((boolean) A) {
}
Так, вы можете изменить свой код:
<?php
define("SCRIPT_URL", "");
function ifScriptFolder() {
if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
echo "/".SCRIPT_URL."/";
} else {
echo "/";
}
}