lilinen / decor
Add method decorations with annotations.
dev-master
2018-11-28 12:00 UTC
Requires
- php: ~7.2
- doctrine/annotations: ^1.6
- doctrine/common: ^2.9
- ocramius/proxy-manager: ^2.2
- psr/log: ^1.0
- psr/simple-cache: ^1.0
Requires (Dev)
- phpstan/phpstan: ^0.10.5
- phpunit/phpunit: ^7.4
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-04-28 23:28:56 UTC
README
Add method decorations with annotations.
Installation
composer require lilinen/decor
Usage
Creating custom decorations
Create a decoration annotation:
<?php // src/Decoration/MyDecoration.php namespace App\Decoration; use LiLinen\Decor\Decoration\AbstractDecoration; /** * @Annotation * @Target("METHOD") */ final class MyDecoration extends AbstractDecoration { }
Create a decorator:
<?php // src/Decorator/MyDecorator.php namespace App\Decorator; use App\Decoration\MyDecoration; use LiLinen\Decor\Decorator\DecoratorInterface; use LiLinen\Decor\Decoration\DecorationInterface; class MyDecorator implements DecoratorInterface { public function supports(string $name): bool { return $name === MyDecoration::class; } public function getBeforeFunction(DecorationInterface $decoration): ?callable { return function ($proxy, $instance, $method, $params, &$returnEarly) { // Add logic }; } public function getAfterFunction(DecorationInterface $decoration): ?callable { return function ($proxy, $instance, $method, $params, $returnValue, & $returnEarly) use ($decoration) { // Add logic }; } }