infection / include-interceptor

Stream Wrapper: Include Interceptor. Allows to replace included (autoloaded) file with another one.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Coverage Status

Infection - Include Interceptor Stream Wrapper

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.

How it works

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.

Use cases

  • 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 mock final classes, by overriding original content and removing final keyword in runtime

Infection - Mutation Testing Framework

Please read documentation here: infection.github.io

Twitter: @infection_php

About

Stream Wrapper: Include Interceptor. Allows to replace included (autoloaded) file with another one.

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:PHP 91.9%Language:Makefile 8.1%