lesphp/psr4-converter

一个用于自动将PSR-0和非标准自动加载转换为PSR-4的工具。

0.5.1 2023-11-22 01:24 UTC

This package is auto-updated.

Last update: 2024-09-28 00:49:25 UTC


README

PSR-4 Converter是一个将PSR-0或非标准代码自动转换为PSR-4规范代码的工具。为了将php代码(支持PHP >= 5.0的代码库)转换为PSR-4,该工具静态解析代码,然后扫描所有代码以找到将更改的定义。使用PSR-4编译遗留代码比仅重命名命名空间需要更多步骤,此工具通过以下方式解决此转换中的问题:

  1. 确保每个php文件只有一个类;
  2. 从PSR-0转换为PSR-4,将下划线转换为命名空间;
  3. 在现有命名空间前加上供应商命名空间;
  4. 从旧类到新类创建class_alias以确保动态调用(通过变量引用类);
  5. 验证php文件中无法转换的无效语句;
  6. 创建包含条件函数和定义的include文件,以便使用composer包含。
  7. 自动生成autoload文件以加载旧类,同时传递新类。
  8. 可以忽略命名空间和目录。
  9. 创建映射json文件,允许使用它来自动化其他步骤。
  10. 将所有对旧类和函数名称的引用重命名为新类和函数名称。
  11. 将DocBlocks中对旧类和函数名称的所有引用重命名为新类和函数名称。
  12. 重构导入以使用新转换的名称。
  13. 风险转换警告。
  14. 校验和验证,允许您安全地使用预存的映射文件。

安装

您可以通过几种方式安装此库。

composer

  1. 将依赖项添加到您的composer require lesphp/psr4-converter项目中。建议通过命令composer require --global lesphp/psr4-converter全局安装。

  2. 运行PSR-4 Converter,使用命令php vendor/bin/psr4-converter help或全局安装后使用psr4-converter help

Phive

  1. 使用命令phive install --force-accept-unsigned lesphp/psr4-converter从phive安装PSR-4。

  2. 通过psr4-converter help命令运行PSR-4 Converter。

用法

映射

映射命令将生成一个包含所有转换所需信息的映射json文件,包括所有旧的和新的名称映射。

psr4-converter map "App" /path/to/source -m /tmp/.psr4-converter.json --append-namespace --underscore-conversion --ignore-namespaced-underscore --ignore-path="ignored_relative_path"

例如,上述命令将生成映射文件/tmp/.psr4-converter.json,其中包含对/path/to/source目录的所有转换,也将

  • 使用App供应商命名空间作为新转换名称,因此一个\Old\Name类将成为\App\Old\Name
  • 使用--underscore-conversion选项,一个Old_Name2类将变为\App\Old\Name2
  • 使用--append-namespace选项,供应商命名空间App将始终添加到新名称中,没有此选项,类\App\Old\Name3将保持为\App\Old\Name3,具有此选项时,它将变为\App\App\Old\Name3
  • 使用--ignore-namespaced-underscore选项,旧名称中的下划线将保留在已命名的类中,因此一个类\Old\Name_Four将变为\App\Old\Name_Four

使用psr4-converter map --help命令以获取有关命令参数和可能性的更多详细信息。

转换

通过映射文件,可以使用以下命令将代码转换为新的目录。

psr4-converter convert /tmp/.psr4-converter.json /path/to/destination -m /tmp/.psr4-converter2.json --ignore-vendor-path --create-aliases --allow-risky

它将把在 /tmp/.psr4-converter.json 中映射的代码转换到 /path/to/destination 目录,也将

  • 需要由 composer 静态包含的定义创建在 /path/to/destination/includes 下。
  • 使用 -m 选项,可以将其他映射文件添加到只用于重命名附加文件中映射的类,因此转换将已经具有附加映射的新名称。
  • 使用 --ignore-vendor-path 选项,将忽略供应商路径以生成转换文件的路径,因此具有新名称 \App\New\Name 的类将位于 /path/to/destination/New/Name.php,这对于在 composer.json 中进行 psr-4 映射很有用。
  • 使用 --create-aliases 选项,将在 /path/to/destination/includes/autoload.php 下创建一个文件,该文件可以静态包含到 composer 中来自动加载旧名称,以保持对旧名称动态调用的兼容性。
  • 使用 --allow-risky 选项,即使有映射风险,工具也将允许进行转换。

使用 psr4-converter convert --help 命令以获取关于参数和命令可能性的更多详细信息。

重命名

使用映射文件,可以重命名映射引用,因此旧名称将被转换为新名称。使用重命名命令如下 psr4-converter rename /tmp/.psr4-converter.json /path/to/destination。转换命令已经重命名了转换的代码,因此重命名命令仅用于重命名已存在的其他代码。

使用 psr4-converter rename --help 命令以获取关于参数和命令可能性的更多详细信息。

检查

使用映射文件,可以检查映射更改。使用检查命令如下 psr4-converter inspect /tmp/.psr4-converter.json。使用 -o names-changes 选项,可以从更改的名称中获取 JSON。

使用 psr4-converter inspect --help 命令以获取关于参数和命令可能性的更多详细信息。