dg/bypass-finals

在源代码中实时移除final关键字,并允许模拟final方法和类

安装次数: 13,803,149

依赖项: 340

建议者: 1

安全: 0

星标: 470

关注者: 13

分支: 30

开放问题: 4

v1.8.0 2024-07-02 22:24 UTC

This package is auto-updated.

Last update: 2024-09-08 09:04:47 UTC


README

bypass-finals

Downloads this Month Tests Latest Stable Version License

 

介绍

BypassFinals 无需费力即可轻松从您的PHP代码中实时移除 finalreadonly 关键字。这款实用工具使得模拟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框架。

 

支持项目

Donate