infection/include-interceptor

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

Fund package maintenance!
infection
Open Collective

Installs: 20 414 139

Dependents: 3

Suggesters: 0

Security: 0

Stars: 30

Watchers: 2

Forks: 5

Open Issues: 4

pkg:composer/infection/include-interceptor

0.2.5 2021-08-09 10:03 UTC

This package is auto-updated.

Last update: 2025-10-01 00:16:05 UTC


README

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.

Installation

composer require infection/include-interceptor

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