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

掌握代码重构:使用 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 rectorconfigrectorconfig;use rectorphp71rectorlist_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 编写代码的方式从来都不是完美的。通常,在编写规则时,它们可能会涵盖典型场景,并且可能会遗漏一些在您的代码库中找到的情况。这可能会导致代码损坏。

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

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

rector php 分步教程

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

use rectorconfigrectorconfig;use rectorphp71rectorlist_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 上的赞助者。如果您想鼓励我写更多这样的文章,请考虑捐赠一笔小额一次性捐款。

以上就是掌握代码重构:使用 Rector PHP 的完整指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1245479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月9日 17:46:00
下一篇 2025年12月9日 17:46:13

相关推荐

  • 处理 Laravel Blade 模板中的枚举值

    laravel 中的枚举提供了一种结构化的方式来表示一组常量值。然而,当涉及到在 blade 模板中使用枚举时,事情有时会变得不清楚,特别是在比较条件渲染的值时。在本文中,我将引导您了解在 blade 模板中处理枚举值的正确方法,帮助您避免常见的陷阱。 了解挑战 laravel 枚举是定义特定状态或…

    2025年12月9日
    000
  • PHP 函数命名与版本控制和持续集成

    PHP 函数命名与版本控制和持续集成 PHP 函数的命名是其设计和可维护性的关键方面。遵循明确的命名约定有助于提高代码的易读性和可理解性,从而使协作和维护变得更加容易。 命名约定 以下是一些常用的 PHP 函数命名约定: 立即学习“PHP免费学习笔记(深入)”; 首字母小写,驼峰式写法(小驼峰形式)…

    2025年12月9日
    000
  • 使用linter工具实现PHP函数参数类型检查

    通过使用linter工具phpstan,我们可以实现php函数参数的类型检查。phpstan是一种静态分析工具,可通过分析变量类型的推断来检查函数参数类型。我们可以使用composer安装phpstan并通过配置phpstan.neon文件来设置检查级别。phpstan通过类型断言和严格类型检查来检…

    2025年12月9日
    000
  • 在 Laravel 11 中的支付处理编译时实现上下文绑定

    在我们之前的文章(如何在 laravel 11 中添加和实现支付处理接口:硬编码绑定)中,我们通过硬编码 paymentprocessorinterface 和特定实现(如 stripepaymentprocessor)之间的绑定来探索设置支付处理器的第一步。 虽然这种方法对于小型应用程序来说简单有…

    2025年12月9日
    000
  • 命名参数在 PHP 生态系统中其他组件(如框架)中的应用

    命名参数在 PHP 生态系统中其他组件的应用 在 PHP 中,命名参数允许你按名称将参数传递给函数或方法,而不是按位置。这提供了更好的可读性和可维护性,尤其是在处理具有许多参数的函数时。 除了核心 PHP,命名参数还在框架和库中得到了广泛应用,例如: Laravel Framework 立即学习“P…

    2025年12月9日
    000
  • 如何通过调整 PHP 配置来预防堆栈溢出?

    通过调整 php 配置中的 memory_limit 设置来增加堆栈大小,可以有效防止堆栈溢出。建议的堆栈大小为 256m 至 512m,但需根据应用程序的实际情况灵活调整。此外,避免过多的递归调用、限制函数调用深度和使用内存剖析器识别内存泄漏等措施也有利于预防堆栈溢出。 如何通过调整 PHP 配置…

    2025年12月9日
    000
  • 怎样在 PHP 中检测堆栈溢出?

    如何在 PHP 中检测堆栈溢出? 堆栈溢出是一种常见的错误,当函数调用过多或递归函数陷入无限循环时会发生。在 PHP 中检测堆栈溢出至关重要,以确保你的应用程序不会崩溃。 什么是堆栈溢出? 在计算机科学中,堆栈是一个数据结构,用于存储函数调用信息。当调用函数时,函数的局部变量和参数保存在堆栈上。如果…

    2025年12月9日
    000
  • 使用 Composer 时的 PHP 命名空间管理?

    Composer 中的 PHP 命名空间管理 简介 Composer 是 PHP 的一个依赖管理工具,它提供了管理代码库中的外部依赖项和类库的功能。命名空间是组织和引用类和函数的一种方法,在使用 Composer 时,命名空间管理至关重要。 使用命名空间 在 PHP 中,可以使用 namespace…

    2025年12月9日
    000
  • PHP 命名空间别名使用的场景?

    php命名空间别名场景:缩写冗长命名空间名称(如 laravel facade)。避免潜在命名冲突(使用别名区分相似库)。组织相关代码(如数据库操作别名 db)。 PHP 命名空间别名使用的场景 PHP 命名空间别名用于缩写长命名空间名称,增强代码的可读性和可维护性。在以下场景中使用命名空间别名很有…

    2025年12月9日
    000
  • PHP 命名空间管理的最佳实践

    php 命名空间管理最佳实践遵循 psr-4 标准,定义命名空间到文件路径的映射。使用 composer 自动加载类,它遵循 psr-4 标准。避免在全局命名空间声明类或函数,以防止名称冲突。使用 psr-0 或 psr-4 命名空间标准,为类和函数提供明确的命名空间。使用清晰的命名约定,为命名空间…

    2025年12月9日
    000
  • PHP 命名空间中的冲突解决方法?

    php 中命名空间冲突的解决方法包括:使用 use 语句导入类或函数;使用别名指定导入类或函数的名称;使用匿名函数创建新的命名空间;使用子命名空间组织类和函数;管理 composer 的 autoload.php 文件以控制类加载顺序。 PHP 命名空间中的冲突解决方法 在 PHP 中使用命名空间可…

    2025年12月9日
    000
  • PHP 命名空间:实用技巧和用法实例

    命名空间是组织和管理 php 实体的机制,用于避免名称冲突并提高代码可读性。要声明命名空间,使用 namespace 关键字;要使用命名空间中的类,使用完全限定名称;可以使用 use 指定别名;命名空间可以嵌套,使用点号分隔器;配置 composer.json 文件中的自动加载器规则以避免在每个文件…

    2025年12月9日
    000
  • 在大型 PHP 项目中组织和使用命名空间

    在大型 php 项目中,命名空间用于组织和管理代码,提高代码可读性、可维护性、组织性,并防止命名冲突。具体做法包括:将相关代码分组在指定文件夹中。使用 psr-4 规范确保兼容性。利用自动加载工具轻松导入所需类。 在大型 PHP 项目中组织和使用命名空间 摘要 命名空间是组织和管理大型 PHP 项目…

    2025年12月9日
    000
  • 群有什么新鲜事

    Laravel Herd 1.11 刚刚发布,他们引入了一些我们期待已久的有趣功能。 以下是 Herd 1.11 的内容摘要: Forge 集成:轻松将本地站点连接到 Laravel Forge,并直接通过 Herd UI 或 CLI 进行部署。Profiler:使用 herd profile CL…

    2025年12月9日
    000
  • PHP 命名空间在模块化开发中的应用?

    在 php 模块化开发中,命名空间用于组织代码,防止冲突。使用 namespace 关键字声明命名空间,自动加载类以简化开发。命名空间可用于将代码组织为不同的模块,并分离相关功能,如数据访问和业务逻辑。 PHP 命名空间在模块化开发中的应用 在 PHP 中,命名空间提供了一种组织代码并防止命名冲突的…

    2025年12月9日
    000
  • PHP 命名空间:自动化管理和自动加载

    通过 composer 管理命名空间可简化管理,使用反斜杠分隔层级结构创建统一标识符域。自动化加载使用 composer 解析包依赖关系并提供统一的加载器,简化对所需类的自动加载。 PHP 命名空间:自动化管理和自动加载 命名空间概述 命名空间是 PHP 中组织代码的一种方法,它使用反斜杠分隔的层级…

    2025年12月9日
    000
  • PHP 函数参数绑定与数据验证的关系?

    函数参数绑定关联参数值和数据类型,而数据验证确保参数符合格式和值。它们协同工作,通过强制类型和验证传入值,提高代码的可读性、可维护性和安全性。 PHP 函数参数绑定与数据验证的关系 简介 在 PHP 函数中,参数绑定是一种将参数值与其数据类型相关联的技术。此技术有助于提高代码的可读性、可维护性和安全…

    2025年12月9日
    000
  • 防止 PHP 递归函数堆栈溢出的最佳实践

    php 递归函数堆栈溢出可通过以下最佳实践预防:设置递归深度限制、使用尾调用优化和循环代替递归。例如,使用以下代码计算斐波那契数列:设置递归深度限制:ini_set(‘recursion_limit’, 100);使用尾调用优化:function fibonaccitail(…

    2025年12月9日
    000
  • 保护 PHP 应用程序免受 SQL 注入攻击

    阻止 sql 注入攻击对于维护 php 应用程序的安全至关重要。 sql 注入是一个漏洞,允许攻击者在您的数据库上执行任意 sql 代码,可能导致数据泄露或丢失。这是防止 php 中 sql 注入攻击的分步指南,配有实践示例和说明。 1.了解 sql 注入 当用户输入未正确清理并合并到 sql 查询…

    2025年12月9日
    000
  • 使用迁移在 Laravel 中进行数据库架构管理:深入教程

    laravel 迁移是管理数据库架构更改的好方法。它们允许您对数据库结构进行版本控制,并随时间轻松回滚或修改更改。在本指南中,我们将逐步探索在 laravel 中创建、运行和回滚迁移的过程,并提供一个实践示例。 第 1 步:设置 laravel 环境 开始迁移之前,请确保已安装 laravel。您可…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信