taluu / chain-of-responsibility-bundle
Bundle allowing to easily implement a chain of responsibility pattern
Installs: 6 068
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
Requires
- php: ^7.1
- symfony/config: ^3.3 || ^4.0
- symfony/dependency-injection: ^3.3 || ^4.0
- symfony/http-kernel: ^3.3 || ^4.0
Requires (Dev)
- phpunit/phpunit: ^6.4
This package is auto-updated.
Last update: 2022-02-04 23:41:09 UTC
README
A simple bundle that helps to integrate a chain of responsibility pattern through Symfony (3.3 and onwards supported). PHP 7.1 is required.
To install it through composer, you just need to require the
taluu/chain-of-responsibility-bundle
package. Other methods (zip, ... and so
on) are supported but you're on your own. :P
Howto
To declare a chain of responsibility, each items must implement the
ChainOfResponsibility\LinkInterface
interface, declaring a successor (if there
is one). How the object is executed is your concern. :}
An AbstractLink
is given if you want to just implement a simple Chain of
Responsibility pattern. Just extend it, and just implement the doHandle
method.
Once you have your chained services, all you have to do is specify them in the bundle's configuration :
chain_of_responsibility: my_first_chain: - foo_service - Bar\Baz # - ... my_second_chain: - Bar\Baz - baz_service # - ... # ... and so on
The items are services identifiers, so these should be declared.
Injecting Chains
In the case you would want to inject the chains, the tip of each chain is
aliased to a chain_of_responsibility.chains.{{ name }}
(e.g
chain_of_responsibility.chains.my_first_chain
). So use that identifier to
inject the correct chain.
Tests
Tested through PHPUnit 6. So just run the tests and it should be all green. :}
Looking for more ?
Checks out more information on this design pattern ;