В статье предлагается новый подход к оформлению синтаксиса в PHP, который основывается на логике языка, а не на исторических привычках из других языков программирования, таких как C или Java. Цель — создать стиль, который будет унифицированным, систематичным, последовательным и лёгким для запоминания.
🔑 Что предложено?
Унификация: одна и та же правило применяется ко всем соответствующим конструкциям — будь то функции, управляющие структуры или вложенные выражения.
Системность: каждое правило следует прямо из синтаксической структуры, а не из лексической категории (ключевое слово, идентификатор и т. д.).
Последовательность: одинаковое обращение с конструкциями без произвольных исключений.
Лёгкость запоминания: устранение контекстных различий и эстетических отличий, не имеющих функционального значения.
📚 Как это работает?
Нет пробела перед открывающимися скобками: Например,
if($x) и while($y) — это всегда одно правило, независимо от того, является ли конструкция управляющей или функцией.Открывающие фигурные скобки всегда на той же строке, что и управляющая структура: Например,
function foo() { или if($x) {.Закрывающие фигурные скобки на новой строке, выровненные с началом блока.
🚫 Почему стоит отказаться от исторических конвенций?
Ранее использованные в таких стандартах, как PSR-2 и PSR-12, подходы взяли за основу стиль, присущий языкам, подобным C, что ведет к путанице и необходимости запоминать исключения. Например, скобки в функциях и управляющих конструкциях должны располагаться по-разному, хотя структура этих конструкций схожа. Эти отличия не улучшали читаемость кода, а наоборот, только увеличивали когнитивную нагрузку.
🔥 Преимущества нового подхода:
Упрощённое восприятие кода.
Совместимость с инструментами автоматического форматирования, такими как PHP-CS-Fixer или линтеры.
Чистый и вертикально структурированный код, который легче воспринимать.
📈 Специальные случаи: if/elseif/else и try/catch/finally
Предлагается установить правило, что все блоки (например,
if, elseif, else, try, catch, finally) должны начинаться с новой строки после закрывающей фигурной скобки предыдущего блока. Это улучшает структуру и читабельность кода, делая его более понятным и логичным.💡 Советы для новых конструкций:
Стрелочные функции (fn): не ставить пробел между
fn и открывающей скобкой.Тернарные выражения (? :): использовать скобки для сложных вложенных выражений и ставить пробелы вокруг
? и :.👉 Читать статью