phlllpe / chain
Lib to create Chain of Responsibility
v1.0.0
2021-12-27 22:17 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ~9.5
- symfony/var-dumper: *
README
HOW TO INSTALL
composer req phlllpe/chain
USAGE
- Create a Handlers, example:
namespace Any\Handler; use Chain\AbstractHandler; use Chain\ContextInterface; class MyHandler extends AbstractHandler { public function handle(ContextInterface $context) { // TO DO ANY ACTION HERE, WITH ANY TEST if ($context->get('any') == 'HERE') { $context->set('myClass', static::class); } return parent::handle($context); } }
- Define a sequence to setup/analyse your context with your handlers;
namespace Any\Service; use Chain\Context; use Any\Handler\{ MainHandler, AddressHandler, BudgetHandler, FamilyHandler }; class MyService { public function __invoke() { $context = new Context(); $context->set('name', 'Philipe Fernandes'); $mainHandler = new MainHandler(); $addressHandler = new AddressHandler(); $budgetHandler = new BudgetHandler(); $familyHandler = new FamilyHandler(); $mainHandler ->setNext($addressHandler) ->setNext($budgetHandler) ->setNext($familyHandler) (new Runner())->run($mainHandler, $context); } }