感染 / inclusion-interceptor
流包装器:包含拦截器。允许用另一个文件替换被包含(自动加载)的文件。
0.2.5
2021-08-09 10:03 UTC
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- infection/infection: ^0.15.0
- phan/phan: ^2.4 || ^3
- php-coveralls/php-coveralls: ^2.2
- phpstan/phpstan: ^0.12.8
- phpunit/phpunit: ^8.5
- vimeo/psalm: ^3.8
README
感染 - 包含拦截器流包装器
这是一个 流包装器,它包装了 file://
协议,并允许覆盖任何(自动)加载的文件的内容,包括由Composer包管理器自动加载的文件。
安装
composer require infection/include-interceptor
如何工作
如果您想每次加载文件时都替换其内容(通过执行 include '/path/to/file.php'
,通过调用 file_get_contents('/path/to/file.php')
等),您需要在加载原始文件之前注册 IncludeInterceptor
use Infection\StreamWrapper\IncludeInterceptor; IncludeInterceptor::intercept('/path/to/original_file.php', '/path/to/replacement_file.php'); IncludeInterceptor::enable();
启用 IncludeInterceptor
后,将加载 replacement_file.php
的内容,而不是 original_file.php
的内容。
使用场景
- 此流包装器用于在 Infection 变异测试框架中将原始文件替换为变异体。
- 在
dg/bypass-finals
包中也使用了相同的方法,该包允许通过覆盖原始内容并在运行时删除final
关键字来模拟final
类。
感染 - 变异测试框架
请在此处阅读文档:infection.github.io