0

0

掌握代码重构:使用 Rector PHP 的完整指南

王林

王林

发布时间:2024-08-26 09:03:10

|

754人浏览过

|

来源于dev.to

转载

掌握代码重构:使用 Rector PHP 的完整指南
照片由 matteo del piano 在 unsplash 上拍摄

php 校长简介

在不断发展的 php 开发世界中,保持代码库干净、最新且高效至关重要。这就是 rector php 发挥作用的地方。如果您一直想知道如何使用 rector php、如何安装它或者 rector php 到底是什么,那么这份综合指南非常适合您。我们将引导您了解基础知识,提供详细的 rector php 教程,并提供有关 php rector 以及如何有效使用它的见解。读完本文后,您将牢牢掌握 rector php 以及它如何增强您的开发工作流程。

php 校长是什么?

rector 于 2020 年启动,但在 2024 年才发布 1.0 版本。它是一个对代码库执行静态分析的命令行工具。根据该分析可以应用更改。我想一个很好的例子是,如果你的代码库充满了 array() 调用,而这现在被认为是一种旧的做法,现在被 [] 短数组语法取代。

通过代码库来替换它是很乏味的。我们可以使用一个简单的查找和替换工具,但是如果有一个 array() 封装了一个字符串或一个不应更改的注释,该怎么办?现在我们必须检查每个被替换的实例。

这类问题正是rector所擅长的。相反,rector 能够查看代码并明确知道它是否是要替换的数组。

你可能会问,php cs fixer 也可以做到这一点,这是真的。但 rector 还让 phpstan 在后台工作,不仅可以识别语法,还可以分析类型。这意味着 rector 可以检测某个类何时具有特定的父类、变量何时为特定类型或函数的预期返回类型。给予它更大的范围来对代码库进行大量更改。

立即学习PHP免费学习笔记(深入)”;

如何安装 rector php

对于经验丰富的 php 开发人员来说,这似乎是显而易见的,但有两种主要方法,这实际上取决于您想要如何使用 rector。

如果您想使用 rector 作为持续集成的一部分,那么通过 composer 将不同的 rector 安装到您的项目中是有意义的。

composer require --dev rector/rector

但是,如果您想在单个或多个项目上尝试使用 rector 来执行升级,那么最好使用
全局安装 rector

composer global require rector/rector

无论您选择哪一步,下一步都是在项目的根目录中创建一个配置,并包含所有包含您希望升级的 php 代码的文件夹。当然,这不包括供应商文件夹,因为我们不想修改它。

这就是 laravel 项目的配置可能的样子:

use rector\config\rectorconfig;
use rector\php71\rector\list_\listtoarraydestructrector;

return rectorconfig::configure()
    ->withpaths([__dir__. '/config', __dir__. '/src', __dir__. '/tests', __dir__. '/routes'])
    ->withimportnames(removeunusedimports: true);

php rector:如何有效使用它

就像上一节一样,使用 rector 可以根据你想如何使用它来决定。校长通过选择规则来应用变更。这与 php cs fixer 相同。这些规则都会检测问题,然后尝试解决它们旨在解决的问题。

如果我们希望以持续集成的方式使用 rector,因为我们希望所有代码在开发时都尽可能优化,我们可能只使用一组特定的规则。

rector 有一组规则,通常被描述为死代码或代码质量,分别删除代码或增强和优化。坚持使用这些设置是非常有利的,因为我们可以确信它们在大多数情况下都有效。但您绝对应该意识到 rector 编写代码的方式从来都不是完美的。通常,在编写规则时,它们可能会涵盖典型场景,并且可能会遗漏一些在您的代码库中找到的情况。这可能会导致代码损坏。

OmniAudio
OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

下载

如果您想使用 rector,您绝对应该为您的应用程序编写测试。没有它们,rector 很容易导致引入错误,而这些错误在成为问题之前你不会发现。

使用 rector 时要考虑的另一件事是,您应该使用像 php cs fixer 这样的 linting 工具。 rector 不会查看空格、方法调用之间的空格和换行符及其参数等。在 rector 应用修复后,使用 linting 工具应该将代码格式保持为您期望的标准。

rector php 分步教程

现在我们已经安装了 rector,我们准备好尝试一下,让我们尝试应用一个规则。让我们从更新之前制作的配置文件开始。

use rector\config\rectorconfig;
use rector\php71\rector\list_\listtoarraydestructrector;

return rectorconfig::configure()
    ->withpaths([__dir__. '/config', __dir__. '/src', __dir__. '/tests', __dir__. '/routes'])
    ->withimportnames(removeunusedimports: true)
    ->withrules([
        listtoarraydestructrector::class,
    ]);

在此配置中,我们将替换列表的使用,从而使用数组重组。我们期望做出的改变如下:

-list($a, $b) = ['a', 'b'];
+[$a, $b] = ['a', 'b'];

现在我们可以通过执行 rector 的试运行来测试此配置。

rector --dry-run

如果一切顺利,我们现在应该看到一个输出,其中包含每个文件的所有更改的差异,以及进行更改的规则列表。我们的配置仅列出一条规则,因此仅应用一条规则,但如果添加更多规则,我们将在此处看到一个或多个规则的列表。

掌握代码重构:使用 Rector PHP 的完整指南

现在是审查更改并确保规则按预期执行的好时机。一旦我们满意,我们就可以再次运行 rector。如果没有试运行标志,更改将写入文件。

rector

完成后,我们应该运行我们最喜欢的 linting 工具,然后运行我们的测试。就是这样。我们现在已经使用了 rector。

结论:使用 rector 促进 php 开发

rector php 是一个功能强大的工具,可以通过自动代码重构并确保您的代码库保持干净和现代来显着增强您的 php 开发工作流程。通过了解 rector php 是什么、学习如何安装它以及掌握如何有效使用它,您可以利用它的功能来简化代码更新、提高代码质量并降低代码感觉像是“遗留”项目的风险。无论您是将 rector 集成到持续集成管道中还是将其用于大规模代码库升级,rector 都是任何希望保持高标准的卓越代码的 php 开发人员不可或缺的资产。

如果你想进一步了解 rector 我建议去 https://getrector.com/.

我是 peter fox,一位在英国使用 laravel 的软件开发人员。感谢您阅读我的文章,我还有更多内容可以阅读 https://articles.peterfox.me。我现在也是 github 上的赞助者。如果您想鼓励我写更多这样的文章,请考虑捐赠一笔小额一次性捐款。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

340

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

294

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

774

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

386

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

146

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

85

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

81

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

653

2026.03.04

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.7万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号