Форматирование кода Adapt Eclipse PHP для стандартов кодирования Symfony

Как адаптировать форматировщик кода Eclipse PHP для стандарты кодирования Symfony?

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

$a = $b->bar.'*'.$c->baz; // not $b->bar . '*' . $c->baz

Форматирование кода позволяет экспортировать и импортировать профиль в XML, но неясно, какая директива в нем отвечает за указанные выше пространства.


См. этот слегка измененный профиль PSR-2 Я использовал как отправную точку без успеха.

Ответ 1

В вашей конфигурации профиля, пробельной вкладке, вам необходимо снять галочку: До операторa > Двоичный оператор После операторa > Двоичный оператор

К сожалению, это не влияет только на оператор конкатенации на строку, другой оператор также будет без пробелов.

Цель formater - иметь все операторы с одинаковым форматом, поэтому это имеет смысл, потому что точка является оператором в соответствии с документы.

Ответ 2

К сожалению, это невозможно без редактирования источника. Вы можете изменить исходный код самостоятельно или запросить запрос функции, чтобы это произошло, и никто не знает, будет ли кто-то это делать.

Вот редактируемые настройки, и я ничего не вижу в этом.

https://github.com/eclipse/pdt/blob/master/plugins/org.eclipse.php.formatter.core/src/org/eclipse/php/formatter/core/CodeFormatterPreferences.java

Ответ 3

Я не использую Eclipse, однако это должно работать:

Согласно Symfony стандарты кодирования:

Symfony следует стандартам, определенным в документах PSR-0, PSR-1, PSR-2 и PSR-4.

Это означает, что вам просто нужно найти форматировщик кода PSR для Eclipse.

Здесь форматор Eclipse для PSR:

Я также использовал инструмент non-Eclipse, который работает в Linux: PHP Fixer Fixer. Это довольно аккуратно и включает поддержку Symfony.

Документация показывает, что что-то вроде этого должно работать:

$ php php-cs-fixer.phar fix /path/to/project [email protected]

И, немного больше копания привело меня к открытию плагина Eclipse, который включает PHP Fixer Fixer, если вы этого не сделали хотите просто использовать командную строку.

Ответ 4

Вы, скорее всего, не будете считать это ответом, но все равно публикуете.

Стандарты кодирования Symfony не изменят ничего на то, как работает ваш проект, и не сделает это быстрее, если вы последуете за ним. В конце концов, это ваш сервер, который выполняет задание, и он принимает PHP независимо от того, как он формируется, пока нет ошибки.

Стандарт кодирования Structude в основном представлен здесь, чтобы вам было легко прочитать ваш код и помочь избежать основных ошибок.

Соглашение об именах, включенные сервисы, является базовым в любом проекте PHP.

И вы сразу заметите, что независимо от того, что вам нужно, вы должны использовать PHPDoc (например: ParamConverter)

В конце концов, неважно, пишете ли вы if (1==1) или if(1 == 1), и не размещаете открытую рамку на следующей строке (я держу ее в одной строке).
До тех пор, пока ваш код будет чистым, и вы можете легко его понять, это самое главное.
Кроме того, если вы похожи на кого-то, кого я знаю и кодирую все на одной строке (истинная история), тогда вы ввернуты.

Что касается вашего вопроса, Eclipse просто недостаточно гибко, чтобы делать то, что вы хотите.
И это, скорее всего, никогда не будет, потому что это бесплатно, никто не заплатит за его разработку.

Я потратил несколько лет на поиск хорошей IDE...
И я посоветую вам тот же совет, который я получил 2 года назад, и что некоторые другие будут предлагать также, используйте PhpStorm из JetBrains.

Если вы случайно студент или учитель, вы можете получить его бесплатно.
Кроме того, вам придется заплатить за это, но, честно говоря, лицензия отдельных клиентов довольно дешевая/год.

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

Надеюсь, что вы найдете этот ответ удовлетворительным.