配置 Laravel Pint
发布于 作者: Steve McDougall
Laravel Pint 是来自 Laravel 团队的热门新事物。它是一个非常棒的 PHP CS Fixer 包装器,是我的首选代码标准工具。
我之前写过关于 Laravel Pint 发布的文章,它在首次发布时默认使用 laravel
标准,这是 Laravel 团队制定的自定义标准。
但是,如果我们想要其他的怎么办?让我们深入了解一下。
如果你阅读文档,它会详细介绍你可以使用 Laravel Pint 做什么。你可以在一个方便的 JSON 文件中实现许多规则,但是哪些规则有效,你应该怎么做呢?
我将带你了解我个人的 Laravel Pint 配置,并解释我为什么选择这些设置。
对齐多行注释
这个规则 align_multiline_comment
允许你修复我称之为“损坏”的任何注释。它们都已失去对齐,看起来很奇怪。就你的代码而言,这不是什么大事,但在阅读代码时会让人烦恼,因为你的眼睛会被吸引到它,而不是你想关注的东西。
数组缩进
规则 array_indentation
允许你修复你创建的任何数组,这些数组由于某种原因已变成“损坏”。这是另一个代码清理规则,它将整理空格使用错误位置等。
数组语法
array_syntax
规则是根据你的代码年龄,你可能不需要的规则。此规则将把旧的 array()
语法更改为新的 []
语法。我保留它以防我有旧代码或与多个可能养成旧习惯的开发人员合作。
命名空间后留空行
blank_line_after_namespace
规则是一个我用来确保在任何类中的命名空间声明下方始终留空行的家政规则。
开始标签后留空行
blank_line_after_opening_tag
规则类似于之前的规则,但它在打开的 PHP 标签后强制留空行。我喜欢保持代码组织良好且一致 - 这些规则使之成为可能。
合并连续的 isset
combine_consecutive_issets
规则是我学到的一点,即可以在 isset 检查中使用多个参数 - 这对我来说是新东西。这将把任何将一个或多个 isset 检查组合在一起的代码转换为一个干净的检查。
// beforeif (isset($a) && isset($b)) // afterif (isset($a, $b))
合并连续的 unset
combine_consecutive_unsets
规则与上面的规则类似,这是我以前不知道我可以做的 - 而且它迫使我使用更好的代码。
// beforeunset($a);unset($b); // afterunset($a, $b);
连接空格
concat_space
规则是我最喜欢的规则之一。它强制在任何字符串连接之间留空格 - 这是我最讨厌的事情之一。我喜欢我的代码有空间,而不是像空间会降低速度一样挤在一起。
// before$name = $request->get('name');$message = 'Hello '.$name; // after$message = 'Hello ' . $name;
声明圆括号
declare_parentheses
规则几乎与上面的规则相反。在任何我使用 declare
语句的地方,我都要确保它周围没有多余的空格。
// beforedeclare( strict_type = 1 ); // afterdeclare(strict_types=1);
声明严格类型
declare_strict_types
规则对我来说是必不可少的。在我代码中使用大量类型的情况下,我还要确保启用了严格类型检查。这是一个方便的规则,可以强制在你的代码库中启用此功能,而无需每次都记住添加它。非常适合 Laravel,因为你不需要修改你的存根来添加它们!
declare(strict_types=1);
显式字符串变量
explicit_string_variable
规则是我喜欢添加的一个规则,因为它使我的代码更易于阅读。在任何你使用隐式变量的地方,它都会使它们像下面这样显式
$name = 'Steve'; $implicit = "Hello, $name";$explicit = "Hello {$name}";
最终类
final_class
规则是我要纠缠 Michael Dyrynda 的规则。它强制你的应用程序中所有类都为 final。但是,要小心,因为它会将每个类都设为 final,如果使用 pest 或扩展 Laravel 中的基类 Controller,可能会导致中断。幸运的是,我对此并不担心,因为我不使用很多继承。
最终内部类
final_internal_class
规则是你用来对抗上面规则的一种方法。如果你不想将类设为 final,因为你打算扩展它 - 请确保在你的配置中将此规则设置为 false
。这将告诉 final 规则忽略此规则,并且内部类不应为 final。
{ "final_internal_class": false}
完全限定的严格类型
fully_qualified_strict_types
规则将强制你在代码中将类作为 use 语句导入,而不是将完全限定的类名作为方法等中的类型声明。这使代码保持干净,干净的代码就是快乐的代码。
// beforepublic function __invoke(\Illuminate\Http\Request $request) // afterpublic function __invoke(Request $request)
我使用了很多其他规则,因此我不会用所有规则来烦你,我将分享我的配置,也可以查看 PHP CS 配置网站,这样你就可以看到规则是什么以及它们的作用。
这是我当前的配置,但请记住我经常调整它,因为我认为代码标准应该是一个活生生的东西。它应该是一个你不断重新评估并查看它是否仍然满足你的需求的东西。
技术作家,就职于 Laravel 新闻,开发倡导者,就职于 Treblle。API 专家,经验丰富的 PHP/Laravel 工程师。 YouTube 直播员.