配置 Laravel Pint

发布于 作者:

Configuring Laravel Pint image

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 检查组合在一起的代码转换为一个干净的检查。

// before
if (isset($a) && isset($b))
 
// after
if (isset($a, $b))

合并连续的 unset

combine_consecutive_unsets 规则与上面的规则类似,这是我以前不知道我可以做的 - 而且它迫使我使用更好的代码。

// before
unset($a);
unset($b);
 
// after
unset($a, $b);

连接空格

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 规则是我要纠缠 Michael Dyrynda 的规则。它强制你的应用程序中所有类都为 final。但是,要小心,因为它会将每个类都设为 final,如果使用 pest 或扩展 Laravel 中的基类 Controller,可能会导致中断。幸运的是,我对此并不担心,因为我不使用很多继承。

最终内部类

final_internal_class 规则是你用来对抗上面规则的一种方法。如果你不想将类设为 final,因为你打算扩展它 - 请确保在你的配置中将此规则设置为 false。这将告诉 final 规则忽略此规则,并且内部类不应为 final。

{
"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 配置网站,这样你就可以看到规则是什么以及它们的作用。

这是我当前的配置,但请记住我经常调整它,因为我认为代码标准应该是一个活生生的东西。它应该是一个你不断重新评估并查看它是否仍然满足你的需求的东西。

Steve McDougall photo

技术作家,就职于 Laravel 新闻,开发倡导者,就职于 Treblle。API 专家,经验丰富的 PHP/Laravel 工程师。 YouTube 直播员.

归档于
Cube

Laravel 新闻

加入 40,000 多名其他开发者,不错过任何新技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

绝不妥协

Joel 和 Aaron,来自“绝不妥协”播客的两位经验丰富的开发者,现可为您的 Laravel 项目提供服务。⬧ 固定价格 7500 美元/月。⬧ 无需冗长的销售流程。⬧ 无需合同。⬧ 100% 退款保证。

绝不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版 Laravel 版本?立即进行自动化的 Laravel 升级和代码现代化,以保持您的应用程序更新。

Shift
Bacancy logo

Bacancy

只需 2500 美元/月,即可为您的项目配备一位经验丰富的 Laravel 开发人员,拥有 4-6 年的经验。获得 160 小时的专用专业知识和 15 天的无风险试用。立即安排电话会议!

Bacancy
Lucky Media logo

Lucky Media

立即获得 Lucky - Laravel 开发的理想选择,拥有十多年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的强大功能引入 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,包含运行现代 SaaS 所需的所有功能。付款、漂亮的结账、管理面板、用户仪表板、身份验证、现成的组件、统计信息、博客、文档等。

SaaSykit:Laravel SaaS 启动工具包
Rector logo

Rector

您的无缝 Laravel 升级合作伙伴,降低成本,加速创新,助力企业取得成功

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务性、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 软件包向您的 Laravel 应用程序添加评论

阅读文章