LINUX.ORG.RU

Конструкция <?php ?> должна вести себя как обычный тег

 , ,


0

1

Скажите, возможно ли PHPStorm настроить так, чтобы <?php /* ... */ ?> работало как обычный тег? Расписываю чуть подробнее, что я имею ввиду под этим.

Вот например ввожу конструкцию <?php echo CHtml::beginForm(); ?>, потом нажимаю на Enter. Курсор на новой строчке имеет столько же отстутпов, сколько и конструкция внутри <?php на предыдушей строке, но мне нужно, чтобы был добавлен ещё один отступ, как и в случае, если бы на предыдущей строке был бы обычный тег.

Если бы вместо <?php echo CHtml::beginForm(); ?> я бы ввёл, к примеру, <form> и нажал бы Enter, то курсор на следующей строке имел бы отступ на один больше, чем тег формы на предыдущей строке.

Сейчас это приносит некоторый дискомфорт при работе с представлениями. Возможно ли настроить поведение так, как мне нужно или это уже совсем что-то странное хочется мне? :)

★★★

Ответ на: комментарий от Deleted

<? … ?> это нечто, имитирующее XML пролог. Оно не добавляет уровень.

Вне зависимости от того, чем это является хочется именно такого поведения. Удобнее будет при таком поведении, которое я описал строить такие конструкции (фреймворкоспецифично):

<?php echo CHtml::beginForm(); ?>
	<?php echo CHtml::textField('field','value'); ?>
	<div>
		<p>Form content.</p>
	</div>
<?php echo CHtml::endForm(); ?>
resurtm ★★★
() автор топика

На всякий случай уточню отдельно: речь идёт про IDE PHPStorm, т.е. IDE от JetBrains (т.е. в IntelliJ или в PyCharm это, возможно, делалось бы примерно так же).

resurtm ★★★
() автор топика
Ответ на: комментарий от resurtm

Это в твоём случае. А в другом будет неудобно. Кто ж такое по дефолту сделает? Хотя может в каких редакторах есть такие опции, но на память таких не помню.

Deleted
()

Settings → Project Settings → Code Style → PHP → Other → Indent code in PHP tags

resurtm ★★★
() автор топика

предлагаю глупую идею

Но если так уж нужен этот отступ, попробуй внутри div'а писать php-вставки <div><?php /*...*/?> </div>

anonymous
()
Ответ на: комментарий от GateKeeper

У тебя один тег добавляет отступ, а другой нет. Давай уже сразу спецификацию для libastral

Нажать Backspace чтобы удалить лишний таб мне проще, чем нажимать Tab.

resurtm ★★★
() автор топика
Ответ на: комментарий от resurtm

Я считаю нажать Tab проще некуда. Отключил все автоотступы. Они действительно могут работать всегда правильно только с libastral. Отключи эти автоотступы и форматируй код как хочешь.

tyler19
()
Ответ на: комментарий от jessey

Это всё есть в избытке для Yii:

https://github.com/yiiext/twig-renderer
https://github.com/yiiext/smarty-renderer
https://github.com/yiiext/dwoo-renderer
https://github.com/yiiext/quicky-renderer
https://github.com/yiiext/tinybutstrong-renderer

Но PHP шаблоны нравятся мне больше. Опять-таки вкусовщина. :)

resurtm ★★★
() автор топика
Ответ на: комментарий от jessey

А что тогда является конкурентом Rails в мире Python? Django? Как-то сложно назвать его конкурентом Rails.

Миграций из коробки нет (да, можно прикрутить django-south), кодогенератора нет вообще, django.db.models совсем ни в какое сравнение с SQLAlchemy не идёт, и т.п., не буду повторять уже сказанное сто раз.

resurtm ★★★
() автор топика
Ответ на: комментарий от resurtm

Миграций из коробки нет

DRY

кодогенератора нет вообще

CBV. Ты про CRUD?

django.db.models совсем ни в какое сравнение с SQLAlchemy не идёт

Ну, у меня пока не было задач, которые не решались бы\решались бы с трудом через ORM джанги. Хотя, возможно, просто мои задачи довольно тривиальны.

jessey
()
Ответ на: комментарий от jessey

CBV. Ты про CRUD?

Не только CRUD, но и генерация scaffolding'а, моделей по существующей табличке в БД, миграций, контроллера + экшнов по имени (view функций, правда, раз говорим о Django), но CBV посмотрю, спасибо.

DRY

Немного непонятно, как именно миграции базы противоречат DRY.

resurtm ★★★
() автор топика
Ответ на: комментарий от bismi

короче получается и глазу приятней

<?=CHtml::beginForm()?>

Так я не спорю, что короче и лучше, но, в моём случае, если большой проект уже написан полностью без использования short_open_tag, то это повредит общей целостности (consistency).

А в новых проектах буду юзать, да, почему бы и нет.

глазу приятней

Я и говорю, на вкус. :)

resurtm ★★★
() автор топика
Ответ на: комментарий от jessey

Но это всё ладно, я просто не сильно вдавался в саму философию Django и пока сужу лишь с позиции Rails и Yii юзера. Спорить в этой теме не собирался и уже пошёл оффтопик, кстати. :-)

resurtm ★★★
() автор топика
Ответ на: комментарий от bismi

не все так плохо)))

http://www.php.net/manual/ru/ini.core.php#ini.short-open-tag

Эта директива также влияла на сокращение <?= до версии PHP 5.4.0, которое идентично записи <? echo. Для использования этого сокращения должна была быть включена директива short_open_tag. Начиная с версии PHP 5.4.0 запись <?= стала доступна всегда.

bismi
()
Ответ на: комментарий от bismi

Так я не совсем про то, что не могу php.ini отредактировать. :) Это вполне возможно за пару минут сделать.

Я про то, что очень много представлений (вьюшек) уже написано без использования короткого PHP-тега, а новый код писать с ним как-то не хочется, чтобы не было такого, что половина проекта так написано, а половина иначе.

resurtm ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.