Laravel Pint - горячая новинка от команды Laravel. Отличная оболочка вокруг PHP CS Fixer, которая является моим инструментом для стандартов кода.
Ранее я писал о выпуске Laravel Pint, когда он был впервые выпущен. По умолчанию он будет следовать стандарту laravel
из коробки, пользовательскому стандарту команды Laravel.
Но что мы делаем, если хотим чего-то другого? Давайте немного углубимся.
Если вы читаете документацию, она очень информативна относительно того, что вы можете сделать с Laravel Pint. Вы можете реализовать много правил в удобном JSON-файле, но какие из них работают хорошо, и что вы должны делать?
Я собираюсь провести вас через мою личную конфигурацию Laravel Pint и объяснить, что и почему я выбираю эти настройки.
Выравнивание многострочных комментариев
Это правило align_multiline_comment
позволит вам исправить любые комментарии, которые я называю «borked». Все они вышли из равновесия и выглядят странно. Это не имеет значения с точки зрения вашего кода, но это раздражает при чтении его, поскольку ваши глаза будут привлечены к нему, а не к тому, на чем вы хотите сосредоточиться.
Отступ массива
Правило array_indentation
позволит вам исправить любые создаваемые массивы, которые, опять же, по какой-то причине стали «скучными». Еще одно правило очистки кода, которое приведет в порядок, где пробелы могут быть использованы в неправильном месте и т. Д. и так далее.
Синтаксис массива
Правило array_syntax
может не понадобиться в зависимости от возраста кода. Это правило изменит старый синтаксис array()
на новый синтаксис [].
Я сохраняю это на случай, если у меня есть старый код или я работаю с несколькими разработчиками, которые могут впасть в старые привычки.
Пустая строка после пространства имен
Правило blank_line_after_namespace
— это правило ведения домашнего хозяйства, которое я использую для обеспечения того, чтобы в объявлении пространства имен в любом классе всегда была
пустая строка.Пустая строка после открывающего
тега Правило blank_line_after_opening_tag
аналогично предыдущему правилу, но применяет пустую строку после открывающего тега PHP. Мне нравится держать свой код организованным и единообразным - эти правила позволяют это сделать.
Объединение последовательных наборов
Combine_consecutive_issets
правило — это правило, которое научило меня, что я могу использовать более одного аргумента в проверке набора, что было для меня чем-то новым. Это преобразует любой код, который объединяет одну или несколько проверок isset, в одну чистую проверку.
// before
if (isset($a) && isset($b))
// after
if (isset($a, $b))
Объединение последовательных несетов
Правило combine_consecutive_unsets
похоже на приведенное выше правило, о чем я не знал, что могу это сделать, и заставляет меня использовать лучший код.
// before
unset($a);
unset($b);
// after
unset($a, $b);
Concat Space
Правило concat_space
является одним из моих любимых. Это заставляет пробелы между любой струнной конкатенцией - это одна из вещей, которые я ненавижу не видеть. Мне нравится, что в моем коде есть место, а не все раздавлено, как будто пространство замедлит его.
// before
$name = $request->get('name');
$message = 'Hello '.$name;
// after
$message = 'Hello ' . $name;
Объявить скобки
Правило declare_parentheses
почти противоположно приведенному выше правилу. Везде, где я использую оператор declare
, я хочу убедиться, что вокруг него нет ненужных пробелов.
// before
declare( strict_type = 1 );
// after
declare(strict_types=1);
Объявление строгих типов
Правило declare_strict_types
является обязательным для меня. С учетом количества используемых типов, которые я использую в своем коде, мне также нравится следить за тем, чтобы включена строгая типизация. Это удобное правило, чтобы заставить это в вашей кодовой базе, не помня о том, чтобы добавлять его каждый раз. Отлично подходит для Laravel, так как вам не нужно изменять свои заглушки, чтобы добавить их!
declare(strict_types=1);
Явная строковая переменная Правило explicit_string_variable
— это то, что я люблю добавлять, поскольку оно делает мой код намного проще для чтения. Везде, где вы используете неявные переменные в своем коде, это сделает их явными, как показано ниже:
$name = 'Steve';
$implicit = "Hello, $name";
$explicit = "Hello {$name}";
Final Class
Правило final_class
— это то, о чем я буду преследовать Майкла Диринду. Это заставляет все ваши классы быть окончательными в вашем приложении. Однако будьте осторожны, так как это сделает каждый класс окончательным, что может привести к поломкам при использовании вредителя или расширении базового контроллера в Laravel. К счастью для меня - я не беспокоюсь об этом так сильно, так как я не использую много наследства.
Последний внутренний класс
Правило final_internal_class
— это способ борьбы с вышеуказанным правилом. Если вы не хотите, чтобы класс был окончательным, поскольку вы планируете его расширить, убедитесь, что в конфигурации для этого правила установлено значение false
. Это скажет окончательному правилу игнорировать это и что внутренние классы не должны быть окончательными.
{
"final_internal_class": false
}
Полные строгие типы
Правило fully_qualified_strict_types
заставит импортировать класс как инструкцию use в коде вместо объявления полного имени класса в качестве типа в методах и т. д. Это сохраняет код чистым, а чистый код — счастливым кодом.
// before
public function __invoke(\Illuminate\Http\Request $request)
// after
public function __invoke(Request $request)
Есть еще много правил, которые я использую, поэтому вместо того, чтобы утомлять вас каждым из них, я поделюсь своей конфигурацией, также взгляните на PHP CS конфигурационный веб-сайт, чтобы вы могли видеть, что такое правила и что они делают.
Вот моя текущая конфигурация , но имейте в виду, что я часто настраиваю это, так как я чувствую, что стандарты кода должны быть живым существом. Это должно быть что-то, что вы постоянно переоцениваете и смотрите, соответствует ли оно вашим потребностям.