stevebauman/unfinalize

GitHub: stevebauman/unfinalize

Unfinalize 是一个 PHP 开发工具,用于自动移除 Composer 依赖包中类和方法的 final 关键字,以便开发者通过继承扩展第三方包。

Stars: 145 | Forks: 5

Unfinalize

释放因开源 PHP 包将类和方法标记为 final 而失去的自由。

Unfinalize 使用 [PHP CS Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) 来永久移除 composer vendor 包中的 `final` 关键字: ``` - final class Foo + class Foo { - final public function bar() + public function bar() { // ... } } ``` - 对 PHP 文件的更新安全、快速且高性能。 - 更改将被永久存储。使用 Unfinalize 不会产生任何性能影响。 - 对您的应用程序没有额外的依赖。Unfinalize 及其依赖项被[编译成一个单独的 phar 文件](https://github.com/stevebauman/unfinalize/blob/master/builds)。 ## 安装 ``` composer require stevebauman/unfinalize ``` ## 用法 您可以使用两种不同的方法来 unfinalize 文件:[文件路径](#file-paths) 或 [包路径](#package-paths)。 ### 文件路径 使用文件路径允许您通过在命令中指定来 unfinalize 特定的文件或目录: ``` php vendor/bin/unfinalize run vendor/package/src/File.php ``` 您可以通过用空格分隔来 unfinalize 多个文件或目录: ``` php vendor/bin/unfinalize run vendor/package/src/Foo/ vendor/package/src/Bar/File.php ``` 为了确保始终在您项目的依赖项上执行此操作,请将该命令添加到您的 `composer.json` 文件的 `scripts` 属性中: ``` { "scripts": { "post-update-cmd": [ "@php vendor/bin/unfinalize run vendor/package/src/Foo/ vendor/package/src/Bar/File.php" ] } } ``` 然后运行 `composer update`。 ### 包路径 使用包路径允许您通过在 `composer.json` 文件中指定来 unfinalize 整个包。 在 `unfinalize` 属性中添加您想要移除 final 关键字的 vendor 包: ``` { "unfinalize": [ "vendor/package" ] } ``` 将 unfinalize 命令添加到您的 `composer.json` 中,以便它在 `composer update` 时运行: ``` { "scripts": { "post-update-cmd": [ "@php vendor/bin/unfinalize run" ] } } ``` 然后,运行 `composer update`。 ### 选项 #### `--annotate={annotation}` 如果您希望在 unfinalize 后,使用注解 (`@{annotation}`) 文档块来标记 final 类和方法, 您可以将 `--annotate` 选项添加到 unfinalize 命令中: ``` { "scripts": { "post-update-cmd": [ "@php vendor/bin/unfinalize run --annotate=internal" ] } } ``` 这将产生: **之前**: ``` final class Foo { final public function bar() { // ... } } ``` **之后**: ``` /** * @internal */ class Foo { /** * @internal */ public function bar() { // ... } } ``` #### `--properties={protected/public}` 如果您希望将 `private` 属性的可见性更改为 `protected` 或 `public`,您可以将 `--properties` 选项添加到 unfinalize 命令中,并指定要分配的新可见性: ``` { "scripts": { "post-update-cmd": [ "@php vendor/bin/unfinalize run --properties=protected" ] } } ``` 这将产生: **之前**: ``` class Foo { private $bar; } ``` **之后**: ``` class Foo { protected $bar; } ``` #### `--methods={protected/public}` 如果您希望将 `private` 方法的可见性更改为 `protected` 或 `public`,您可以将 `--methods` 选项添加到 unfinalize 命令中,并指定要分配的新可见性: ``` { "scripts": { "post-update-cmd": [ "@php vendor/bin/unfinalize run --methods=public" ] } } ``` 这将产生: **之前**: ``` class Foo { private function bar() { } } ``` **之后**: ``` class Foo { public function bar() { } } ``` #### `--dry` 执行一次预演 (dry run) 以查看哪些文件将被 Unfinalize 修改: ``` vendor/bin/unfinalize run --dry ```
标签:Composer, ffuf, OpenVAS, PHP, PHP CS Fixer, SOC Prime, 代码重构, 依赖管理, 开发工具