dg / bypass-finals
在源代码中实时移除final关键字,并允许模拟final方法和类
v1.8.0
2024-07-02 22:24 UTC
Requires
- php: >=7.1
Requires (Dev)
- nette/tester: ^2.3
- phpstan/phpstan: ^0.12
README
介绍
BypassFinals 无需费力即可轻松从您的PHP代码中实时移除 final
和 readonly
关键字。这款实用工具使得模拟final方法和类成为可能,并能够与流行的测试框架如PHPUnit、Mockery或Nette Tester无缝集成。
安装
通过Composer安装BypassFinals是最简单的方法。只需在项目目录中运行以下命令
composer require dg/bypass-finals --dev
它几乎可以在任何地方运行:支持PHP 7.1至8.3!
使用方法
要启动BypassFinals,只需调用
DG\BypassFinals::enable();
请确保尽早调用此方法,最好是立即在加载vendor/autoload.php
之后,以确保在它们被使用之前处理所有类。
请注意,final内部PHP类(如Closure
)不可模拟。
要避免移除readonly
关键字,可以通过传递参数来禁用此功能
DG\BypassFinals::enable(bypassReadOnly: false);
要缩小BypassFinals的应用程序范围,使用白名单指定目录或文件
DG\BypassFinals::allowPaths([ '*/Nette/*', ]);
或者,相反,您可以使用DG\BypassFinals::denyPaths()
指定不搜索的路径。这提供了更精细的控制,并可以解决某些框架和库的问题。
通过缓存转换后的文件来提高性能。请确保缓存目录已存在
DG\BypassFinals::setCacheDirectory(__DIR__ . '/cache');
要与PHPUnit 10或更高版本集成,只需将BypassFinals添加到您的PHPUnit XML配置文件中的扩展即可
<extensions> <bootstrap class="DG\BypassFinals\PHPUnitExtension"/> </extensions>
您喜欢这个项目吗?
查看我的其他可能引起您兴趣的创新开源项目
✅ Latte:PHP唯一的可靠且直观的模板系统
✅ Tracy:一款令人上瘾的调试工具,可增强您的开发工作流程
✅ PhpGenerator:用于生成具有现代功能的PHP代码的强大库
✅ Nette Framework:精心设计且流行的Web框架。