It's a Stream Wrapper that wraps a file://
protocol and allows overriding content of any (auto) loaded file, including files autoloaded by Composer package manager.
If you want to replace the content of the file whenever it's loaded (by executing include '/path/to/file.php
, by calling file_get_contents('/path/to/file.php')
, etc.), you need to register IncludeInterceptor
before loading original file:
use Infection\StreamWrapper\IncludeInterceptor;
IncludeInterceptor::intercept('/path/to/original_file.php', '/path/to/replacement_file.php');
IncludeInterceptor::enable();
After enabling IncludeInterceptor
, content of the replacement_file.php
will be loaded instead of content of the original_file.php
.
- This Stream Wrapper is used to replace the original file with the Mutant in Infection Mutation Testing Framework
- The same approach is used in the
dg/bypass-finals
package that allows to mockfinal
classes, by overriding original content and removingfinal
keyword in runtime
Please read documentation here: infection.github.io
Twitter: @infection_php