Задать вопрос

Expecting statement в phpStorm при использовании альтернативного синтаксиса управляющих структур. Как победить?

Суть вопроса - При использовании альтернативного синтаксиса управляющей структуры if на примере :
<?php if ($var) : ?>
    <!--html code -->
<?php else : ?>
    <!--html code -->
<?php endif; ?>

условие <?php else : ?> подчеркивается красным и появляется всплывающее сообщение "Expecting statement" (скриншот)
daad97387c7d4d3e8952b6a5620023fe.png
Причем в браузере никак данная ошибка не отображается, только в IDE неприятные красные подчеркивания.
Но если использовать традиционный синтаксис, то все хорошо:
<?php if ($var) {  ?>
    <!--html code -->
<?php } else { ?>
    <!--html code -->
<?php }  /* if ($var) */?>

(скриншот)
699bdfb3193a498291986b95b78d927f.png
---
Все это пишется в файле с расширением .php , но среди html кода (вставка данных в шаблон).
ps. Можно конечно пользоваться и вторым вариантом + этого в том, что парные скобочки подсвечиваются почти во всех современных средах, от простого NOTEPAD++ и до phpStorm. Но все же первый вариант более красивый, более читаемый что-ли.
---
Только осваиваю данную умную IDE. Помогите, может быть я что-то не так делаю?
  • Вопрос задан
  • 5132 просмотра
Подписаться 3 Оценить 1 комментарий
Решения вопроса 2
@Tumass
Веб-разработчик
Есть такая проблема, воспроизвести можно следующем образом
<? if (....): ?>
....
<? endif: ?>

После чего вставить в середину
<? else: ?>
В результате будет ошибка.
Как вариант писать/переписать по очереди if() else endif.
<? if (....): ?>
....
<? else: ?>
....
<? endif ?>


Сильно не заморачивался, возможно есть и более "правильный путь"
Ответ написан
redflasher
@redflasher
Full-stack developer
Мне помогло отключение настройки Template data languages. Сначала стояло AngularJS и такой баг возникал.
Убрал - и баг исчез.5b9ce656abeca043844753.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AloneCoder
@AloneCoder
[object Object]
На то она и умная IDE, что-то значит выше не так. Может, например, endforeach не в том месте
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Сам никогда не замечал, видимо потому что сразу строю нужную логику и ничего не подсвечивается. Услышал про этот баг от коллеги, заглянул в багтрекер - вуаля, проблема старая как мир. Уже годами не лечится, хотя отмечена как major issue.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы