addvilz / autoload_patcher
在自动加载之前修补任何类文件
v1.0.0
2016-02-10 14:01 UTC
This package is not auto-updated.
Last update: 2024-09-14 19:04:00 UTC
README
此库的目的
此库的目的是在运行时修补类文件的源代码。
有些情况下,您需要修改第三方代码的功能,但无法替换或扩展它(例如,来自其他第三方代码的静态调用是一个很好的例子)。
此库允许您替换、增强或以其他方式更改原始源代码,并在之后对其进行评估。
安装
composer require addvilz/autoload_patcher
示例用法
$loader = require 'vendor/autoload.php'; $patcher = new \Addvilz\AutoloadPatcher\Patcher($loader); $patcher ->register() ->addPatcher('Some\Vendor\UtilityClass', function ($code) { // Let's rename the class $code = str_replace( 'class UtilityClass', 'class VendorUtilityClass', $code ); // ... More modification here, runtime code generation, etc. return $code; });
它是如何工作的?
Patcher->register()
方法调用将自动加载回调追加到自动加载堆栈中。这意味着,所有类加载将通过 Patcher
实例进行代理,如果已注册给定类的修补程序回调,它将针对由 Composer ClassLoader
类确定的文件中的源代码执行。
注意:在将类源代码传递给回调函数之前,将删除 PHP 标签!
注意:修补程序回调函数返回的任何内容都将传递给 eval()
。
许可
在 Apache 2.0 许可证的条款和条件下授权。