https://github.com/nikic/include-interceptor
Library to intercept and dynamically transform PHP includes. Forked from icewind1991/interceptor.
https://github.com/nikic/include-interceptor
Last synced: about 2 months ago
JSON representation
Library to intercept and dynamically transform PHP includes. Forked from icewind1991/interceptor.
- Host: GitHub
- URL: https://github.com/nikic/include-interceptor
- Owner: nikic
- Created: 2019-12-28T23:29:17.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-13T09:06:20.000Z (12 months ago)
- Last Synced: 2025-05-09T01:46:38.817Z (about 2 months ago)
- Language: PHP
- Homepage:
- Size: 64.5 KB
- Stars: 69
- Watchers: 4
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Include Interceptor
Library to intercept PHP includes. A fork of [icewind1991/interceptor](https://github.com/icewind1991/interceptor).
```
composer require nikic/include-interceptor
```## Usage
```php
use Nikic\IncludeInterceptor\Interceptor;$interceptor = new Interceptor(function(string $path) {
if (!wantToIntercept($path)) {
return null;
}
return transformCode(file_get_contents($path));
});
$interceptor->setUp(); // Start intercepting includesrequire 'src/foo.php';
$interceptor->tearDown(); // Stop intercepting includes
```The interception hook follows the following contract:
* It is only called if the included file exists.
* The passed `$path` is the realpath.
* If the hook returns `null`, no interception is performed.
* If the hook returns a string, these are taken as the transformed content of the file.For convenience, a `FileFilter` is provided that implements white- and black-listing
of files and directories. Paths passed to `addBlackList()` and `addWhiteList()` should
always be realpaths.```php
use Nikic\IncludeInterceptor\Interceptor;
use Nikic\IncludeInterceptor\FileFilter;$fileFilter = FileFilter::createAllWhitelisted(); // Start with everything whitelisted
$fileFilter->addBlackList(__DIR__ . '/src/'); // Blacklist the src/ directory
$fileFilter->addWhiteList(__DIR__ . '/src/foo.php'); // But whitelist the src/foo.php file
$interceptor = new Interceptor(function(string $path) use ($fileFilter) {
if (!$fileFilter->test($path)) {
return null;
}
return transformCode(file_get_contents($path));
});
$interceptor->setUp();require 'src/foo.php';
```