adawolfa / implement
Implementation generator for interfaces and abstract classes.
1.0.0
2024-02-25 17:44 UTC
Requires
- php: >=8.3
- nette/php-generator: ^4.1
Requires (Dev)
- phpstan/phpstan: ~1.10.59
- phpunit/phpunit: ~10.5.10
This package is auto-updated.
Last update: 2024-10-25 19:06:49 UTC
README
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
- intersection & union types
- attributes (copied from declaration to implementation)
- documentation comments (ditto)
- strict-types
- memory cache (for development) & file cache (for production, opcache optimized)