Есть ли автоматический способ исправить одну строку ifs в PHP?

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

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

или же

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

Я хотел бы увидеть

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

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

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

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

Как вы думаете?

1 ответ

Решение

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

См. Этот ответ для получения дополнительной информации о PHP Tokenizer: /questions/33573885/metod-naprimer-s-pomoschyu-skripta-bash-dlya-preobrazovaniya-indeksov-massiva-php-ispolzuyuschih-v-nastoyaschee-vremya-konstantyi-v-indeksyi-massiva-s-ispolzovaniem-strok-v-odinarnyih-kavyichkah/33573896#33573896

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

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

Другие вопросы по тегам