Implementation generator for interfaces and abstract classes.
Hello world. | 292f0cc, 25 Feb 2024 |
---|---|
src/ | |
tests/ | |
.editorconfig | |
.gitattributes | |
.gitignore | |
composer.json | |
LICENSE | |
phpstan.neon | |
README.md |
Implementation generator for interfaces and abstract classes.
Generates a class extending or implementing given type and forwards all calls to its methods to a given call handler.
Installation
composer require adawolfa/implement
Usage
interface MyService
{
function foo();
}
$handler = new class implements Adawolfa\Implement\Handler {
public function handle(Adawolfa\Implement\Call $call) : mixed
{
var_dump($call->method->name); // foo
return 'bar';
}
};
$generator = new Adawolfa\Implement\Generator;
$implementation = $generator->generate(MyService::class);
$service = $implementation->construct($handler);
var_dump($service->foo()); // bar
Supports
- non-static methods
- parameters passed by reference (write into call arguments, e.g.
$call->arguments['param'] = 123;
) - returning by reference
- abstract methods from traits
- multi-level inheritance
- attributes (copied from declaration to implementation)
- documentation comments (ditto)
- strict-types
- memory cache (for development) & file cache (for production, opcache optimized)