Есть ли автоматический способ исправить одну строку ifs в PHP? - PullRequest
1 голос
/ 11 января 2012

Я не знаю, только это я или нет, но у меня аллергия на одну строку if в любом языке, подобном c, мне всегда нравится видеть фигурные скобки после if, поэтому вместо

if($a==1)
  $b = 2;

или

if($a==1) $b = 2;

Хотелось бы увидеть

if($a==1){
   $b = 2; 
}

Полагаю, я могу поддержать свои предпочтения, утверждая, что первый способ более подвержен ошибкам и имеет меньшую читаемость.

Моя проблема сейчас заключается в том, что я работаю над кодом, который упакован с этими однострочными ifs, мне было интересно, есть ли какая-то утилита, которая поможет мне исправить эти ifs, какое-то украшение php-кода, которое сделает это.

Я также думал о разработке некоторого вида регулярного выражения, которое можно было бы использовать с командой linux sed для достижения этой цели, но я не уверен, возможно ли это даже с учетом того, что регулярное выражение должно соответствовать одной строке ifs, и обернуть их фигурные скобки, поэтому логика заключалась бы в том, чтобы найти условные операторы if и if, а затем искать {после условия, если не найдено, затем переносить следующую строку или следующий набор символов перед переносом строки, а затем переносить с помощью {и}

Что вы думаете?

1 Ответ

1 голос
/ 22 ноября 2012

Лучше всего, вероятно, использовать встроенный токенайзер PHP и анализировать полученный поток токенов.

См. Этот ответ для получения дополнительной информации о токенайзере PHP: https://stackoverflow.com/a/5642653/1005039

Вы также можете взглянуть на сценарий, который я написал для анализа исходных файлов PHP, чтобы исправить еще одну распространенную проблему в унаследованном коде, а именно исправить индексы без кавычек: https://github.com/GustavBertram/php-array-index-fixer/blob/master/aif.php

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

...