- Update dev lib requirements
- Require Symfony libraries 6.4 or 7.2
- Update to PHPUnit 12
- Drop support of PHP 8.2
- The library stay usable with PHP 8.2, without any waranties and tests
- In the next major release, Support of PHP 8.2 will be dropped
- Fix issue with PHP8.4 and compiled container
- Fix deprecation into test with PHP 8.4
Teknoo\East\FoundationBundle\Command\Client
use constant forreturnCode
following POSIX return code.
- Migrate to
Teknoo Recipe
6. - Rename
Cookbook
toPlan
.- Old classes and interfaces are deprecated.
- Migrate to
EditablePlan
all previousCookbook
/Plan
. - Remove
registerMiddleware
in East Foundation Recipe.- Remove
Recipe::registerMiddleware
. - Replaced by usind directly cook or add method in the dedicated plan or recipe.
- Remove
- Migrate the decoration about the East Foundation Plan to register the
SessionMiddleware
.
- Add
ManagerInterface::listLoadedExtensions
to get the list of loaded extension - Add
__toString
method toExtensionInterface
to get an human-readable. - Set
Manager::instance
as protected to allow replacement by manager's inherited classes.
- Pass also app env to Routes extension module
- Complete services.yaml to create from container PHPDI module, but, by default, it's not used, because the container is not ready when the PHP DI Bridge extension call it. The Symfony container is configured to call module's factory to retrieve the singleton
- Update requirements libs
- Use
random_bytes
instead ofuniqid
-
New feature to provide an extension behavior in your application, and symfony app to extend them without update configuration of your application. Ideal to distribute your applications with plugin or a marketplace. There are three parts :
- Modules contracted thanks to
Teknoo\East\Foundation\Extension\ModuleInterface
. There are no methods defined, each module has its own behavior Teknoo\East\Foundation\Extension\ExtensionInterface
to implement in your extension (or plugin) to update the application configuration according to modules passed- An extension manager, contracted thanks to
Teknoo\East\Foundation\Extension\ManagerInterface
and implemented byTeknoo\East\Foundation\Extension\Manager
, to find and load extensions when a module is called. - When the extension is called, it can ignore or update the configuration through the module passed.
- This feature does not use a DI, because theses operations are often performed during the initialization, so singleton and static methods are used.
- Manager use loader, contracted by
Teknoo\East\Foundation\Extension\LoaderInterface
to detect and load extensions. There are two embedded loader:Teknoo\East\Foundation\Extension\FileLoader
to load all extensions declared into a json array in a file, by defaultextensions/enabled.json
, but it can be overrided by setting the env varTEKNOO_EAST_EXTENSION_FILE
.Teknoo\East\Foundation\Extension\ComposerLoader
to load all extensions implementing the interface from the classmap of Composer.- By default,
FileLoader
is used but, the loader can be changed thanks to the env varTEKNOO_EAST_EXTENSION_LOADER
(need the full qualified classname of the desired loader).
- To disable this behavior, evan if module are loaded, you can set the env var
TEKNOO_EAST_EXTENSION_DISABLED
(any value, must be only set and non empty) - Three modules are provided :
-
Teknoo\East\FoundationBundle\Extension\Bundles
to use in yourbundles.php
file to extend the list of Symfony Bundle to load. -
Teknoo\East\FoundationBundle\Extension\Routes
to use in yoursrc/Kernel.php
file to complete the list of routes. -
Teknoo\East\FoundationBundle\Extension\PHPDI
, to extend the configuration of PHP-DI when theTeknoo PHP DI Bridge
is used. To enable it, add to your Symfony configuration :di_bridge: extensions: - { name: 'Teknoo\East\FoundationBundle\Extension\PHPDI', priority: 0 }
-
- Modules contracted thanks to
-
Fix some PSR4
-
Remove Composer unused in dev requirements
-
Update to PHPUnit 11 and devs libraries
-
Enable PHP8.4 in tests and fix deprecations
- Fix deprecated : replace
Symfony\Component\HttpKernel\DependencyInjection\Extension
bySymfony\Component\DependencyInjection\Extension\Extension
- Drop support of PHP 8.1
- Add sensitive parameter attribute on methods catching throwable to prevent leak.
- Add some resetable behavior on some symfony services.
- Fix support of last PHPStan 1.10.64
- Use State 6.2
- Use Recipe 5+
- Improve SleepService to use new
Promise
feature
- Prevent bug with
TimerService
andSleepService
if$seconds
is0
- GroupsTrait support lazy data to fetch collections only after filtering key.
- Lazy Data must be passed in a closure called by
GroupsTrait::filterExport
if the arg$lazyData
is attrue
.
- Lazy Data must be passed in a closure called by
- Update documentation.
- Require
Recipe
4.6+
TimerService
clone theDatesService
instance to avoid collusion when it use the real date.
- Add
DatesService::forward
to get a date in the futur. Same behavior ofDateTime::modify
- Add a pseudo non blocking Sleep service, build on timer
- Update dev lib requirements
- Support Symfony 7+
- Update dev lib requirements
- Support Symfony 7+
- Update dev lib requirements
- Support Symfony 7+
- Use last Recipe version
- Add
#[SensitiveParameter]
to normalizer to prevent leaks - Update composer audit configuration
- Fix
Teknoo\East\Foundation\Command\Executor
DI definition with a dedicated manager
SessionMiddleware
does not get Session object if the request as the attribute_stateless
to avoid session creation.
- Add
Teknoo\East\Foundation\Normalizer\Object\GroupsTrait
to support groups serializations / normalizations. - Fix doctype in
EastNormalizer
.
- Support
PSR-15
with add to newRecipe Bowl
type :FiberHandlerBowl
(andFiberMiddlewareBowl
) to support PSR 15 Requests handlers into a recipe.MiddlewareBowl
(andFiberMiddlewareBowl
) to support PSR 15 middleware into a recipe.- The injected request handler is a wrap of the East Manager to resume/continue the recipe and get a PSR Response from the client.
- These bowls will automatically push response to the client at the end of the execution
- Support
PSR-20
with theDatesService
.
- Support PHP-DI 7.0+
- Support Laminas Diactoros 3.0+
- Support PHP-DI 7.0+
- Support Laminas Diactoros 3.0+
- Fix deprecation in Symfony normalizer
- Update Teknoo libs
- Require Symfony 6.3 or newer
- Improve documentation
- Update dev lib requirements
- Update copyrights
- Update dev lib requirements
- Support PHPUnit 10.1+
- Migrate phpunit.xml
- Allow psr/http-message 2
- Q/A
- Add
Teknoo\East\Foundation\Liveness\PingServiceInterface
forPingService
- Add
Teknoo\East\Foundation\Liveness\TimeoutServiceInterface
forTimeoutService
- Add
Teknoo\East\Foundation\Time\TimerServiceInterface
forTimerService
- Remove phpcpd and upgrade phpunit.xml
- Update dev libs to support PHPUnit 10 and remove unused phploc
- Fix
TimerService
when a timer is rescheduled without unregister before.
- Fix
TimerService
when a new timer with a previous used id, to not be called at previous time.
- Fix
TimerService
to allow reschedule a new timer with the same timer id during the timer call.
- Add
DatesService
from Teknoo East Common - Add
DatesService::since
to get a date in the past. Same behavior ofDateTime::modify
- Add
TimerService
to schedule a task / function call in x seconds, several tasks in different timer can be scheduled - Add
TimeoutService
to centralize and managerset_time_limit
behavior and use a throwable exception instead of fatal error - Add a
PingService
to centralize ping behavior for liveness feature. - Migrate
Executor
from Symfony Messenger toEast\Foundation\Command
- Some QA fixes
- Remove support of Symfony 6.0
- Update composer.json
- Fix deprecated in
EastNormalizer
- Clean code and test thanks to Rector
- Update libs requirements
- Rename
.yml
files to.yaml
- Require Recipe 4.1.2 or later
- Improve PHPDoc about
PromiseInterface
with template - Remove deprecated features from 5.* and below
- Require Immutable 3.0.1 or later
- Requipe Recipe 6.0.1+ to fix issue with
RecipeBowl
.
- Constants are final in
SessionMiddleware
, processors, routers and sessions components - Use readonly for immutables objects (
Processor
and routers' results) - Support Fibers in main
Cookbook
andRecipeEndPoint
.RecipeEndPoint
accepts also bowl andFiberRecipeBowl
. - Remove support of PHP 8.0 and Symfony 5.4 and below
- Support Immutable 3.0
- Support State 6.0
- Support Recipe 4.0
- Remove unused QA tool
- Remove support of Symfony 5.3
- Support Symfony 5.4 and 6.0+
- Fix some deprecated with PHP 8.1
- Add
excludedPaths
option in Router to not manage some path in this library and fallback directly to Symfony (usefull for profiler or other stuff from Symfony).
- Fix some deprecated with PHP 8.1
- QA
- Migrate to PHPStan 1.1+.
- Remove dead code in Symfony Router adapter.
- Fix error with
JsonSerializable
response's content type in client. - Put
SessionInterface
instance also into workplan.
- QA, Fix PHPDoc
- Remove support of Symfony 5.2.
- Switch to Recipe 3.2.
- Switch to Recipe's promise instead East' Promise.
- East' Promise are now deprecated.
- Update documents and dev libs requirements
- Fix Symfony Http Client implementation to not convert to string a response implementing the PSR Response interface and East Response interface. (PSR Response is prior).
- Move ClientInterface to
Teknoo\East\Foundation\Client
fromTeknoo\East\Foundation\Http
- Add
Teknoo\East\Foundation\Client\ResultInterface
ClientInterface
accept also ResultInterface instead PSR's message- All clients implementations adopts new client interfaces
- Symfony Clients implementations supports
ResultInterface
andJsonSerializable
responses
- Add ManagerInterface::updateMessage() to update a message from a step without call continueExecution()
- Fix Processor mandatories ingredients to use classname instead of legacy keyword
- Minor version about libs requirements
- Fix Processor to allow silent client when no compatible callable was found
- Add method to configure client's behavior when a it must send a missing response (silently or throw an exception)
- Add
ClientInterface::mustSendAResponse
- Add
ClientInterface::sendAResponseIsOptional
- Add
- Processor will configure in non silent mode if a compatible callable is available and was returned by Router
- This behavior can be disable by set
teknoo.east.client.must_send_response
to false in DI
- This behavior can be disable by set
- Some optimisations on array functions to limit O(n)
- switch to str_contains
- Messenger's executor use an empty manager and clone it
- Constructor Property Promotion
- Non-capturing catches
- Migrate to PHP 8.0+
- Remove support of Symfony 4.4, only 5.2+
- QA and license file
- Create ResponseMessageFactory to return a PSR 11 response (use Laminas implementation) instead of basic Message.
- Add MessageFactory definitions into the laminas_di file
- Add PSR11 Message only implementation
- Add MessageFactory
- Update Client Interface to use MessageInterface instead of RequestInterface
- Add Recipe executor dedicated to Symfony Messenger
- Add Client dedicated to Symfony Messenger
- Remove some public services
- Clean symfony yaml indentations
- Manager update workplan with canonicals classes names about instances of client and message instead
use keyword
request
andclient
- Replace psr/container-implementation to psr/container
- Switch to States 4.1.9 and PHPStan 0.12.79
- Prepare library to be used in non HTTP context
- Use MessageInterface instead of ServerRequestInterface
- Cookbook and ProcessorCookbook use BaseCookbookTrait
- Add argument to controller of RecipeEndPoint to allow override/complete some entry in the workplan, before fetching service from container thanks to Request's attribute, to escape/secure some workplan's ingredients from request's parameters (passed by the HTTP client).
- Update ClientInterface to allow errorInRequest to be called silently without throw an excepton
- Add support of a PSR Logger in Symfony Client implementation
- Fix symfony services definitions and twig definition
- Migrate Client definition from PHPDI into Symfony
- Fix RecipeEndPoint to pass also value with escaped
@
without the second@
- Update to last version of States and Recipe
- Complete RecipeEndPoint to fetch services referenced into request's attribute from container to put them in workplan
- Official Support of PHP8
- Allow Command/Client to be created without output instance.
- Add Command/Client as ClientInterface implementation to use East Foundation with Symfony Command in CLI application.
- Add CallbackStreamFactoryInterface, and CallbackStreamFactory implements CallbackStreamFactoryInterface
- Prepare library to support also PHP8.
- Remove deprecations from PHP8.
- Remove dead code in result (getParameter() was not used).
- Support CookbookInterface for RecipeEndpoint
- Create ProcessorCookbook and ProcessorCookbookInterface
- Create RecipeCookbook and RecipeCookbookInterface
- Update DI to use cookbooks instead inject step in recipes, to allow overridding cookbook more easily
- Fix manager DI Injection
- Create ProcessorCookbook and ProcessorCookbookInterface
- Create RecipeCookbook and RecipeCookbookInterface
- Update DI to use cookbooks instead inject step in recipes, to allow overridding cookbook more easily
- Recipe extends CookbookInterface
- Recipe extends CookbookInterface
- Support CookbookInterface for RecipeEndpoint
- Remove useless empty state declaration in manager and recipe in East Foundation, not required with current version of States.
- Update QA and CI tools
- Complete Di definition dedicated to Laminas for Symfony bundle to work out of the box with the metapackage
teknoo/east-foundation-symfony
.
- Add Di definition dedicated to Laminas for Symfony bundle to work out of the box with the metapackage
teknoo/east-foundation-symfony
.
- Remove synthetic service in Symfony DI to support last version of teknoo/bridge-phpdi-symfony
- Update libs and dev libs requirements
- Restore support to deprecated Symfony\Bundle\FrameworkBundle\Controller\Controller and only Symfony\Bundle\FrameworkBundle\Controller\AbstractController.
- Update libs requirements
- Remove express support to deprecated Symfony\Bundle\FrameworkBundle\Controller\Controller and only Symfony\Bundle\FrameworkBundle\Controller\AbstractController.
- Add travis run also with lowest dependencies.
- Remove Symfony Template component (integration deprecated into symfony)
- Create EngineInterface to allow creation of adapter to any templating Engine
- Create ResultInterface to allow asynchrone template rendering for callback streaming
- Create Twig Engine implementing EngineInterface and ResultInterface
- Remove 'east.controller.service' tag (not used)
- Add east.endpoint.template to inject Twig engine adapter
- Fix services definitions
- Complete tests
- Migrate universal folder in src to src's root and remove legacy support
- Fix services definitions
- Complete tests
- Migrate universal folder in src to src's root and remove legacy support
- Remove Symfony Template component (integration deprecated into symfony)
- Create EngineInterface to allow creation of adapter to any templating Engine
- Create ResultInterface to allow asynchrone template rendering for callback streaming
- Create Twig Engine implementing EngineInterface and ResultInterface
- Remove 'east.controller.service' tag (not used)
- Add east.endpoint.template to inject Twig engine adapter
- Remove autowiring to Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface to avoid error in Symfony DI Build with PHP DI without synthetic service.
- Replace RouterInterface to UrlGeneratorInterface
- Require Teknoo States 4.0.9 to support PHPStan 0.12.26
- Cancel change in 2.1.3 (Security issue with Symfony's Firewall)
- Change Symfony's East Router implementation to manage also Controller definition
ClassName::MethodName
for classic Symfony's controller, not implementing a Symfony's abstract but not are not a static method.
- Change Symfony Kernel listener priority to be called before controller name resolver
- Update dev tools, migrate to PHPUnit 9.0, phploc 6.0, phpcpd 5.0
- Support symfony/psr-http-message-bridge also 2.0
- Migrate Symfony implementation to infrastructures
- Create the interface CallbackStreamInterface to define Stream able to manage asynchronous callback content generation
- Split EastEndPointTrait, in several traits, by method' roles (Authentication, Exception, PSR Response Factory, Routing / Redirecting and Templating)
- Rework Symfony implementation to able to use any PSR 7 and PSR 17 implementation instead of Zend Diactoros
- Create an adapter of Diactoros CallbackStream implementing CallbackStreamInterface
- Add Teknoo\East\Diactoros\CallbackStreamFactory to provide a StreamFactory for Teknoo\East\Diactoros\CallbackStream
- Complete Tests
- Split
EndPointInterface
into two dedicated interfacesRedirectingInterface
andRenderingInterface
Split EndPointInterface
into two dedicated interfaces RedirectingInterface
and RenderingInterface
Split EndPointInterface
into two dedicated interfaces RedirectingInterface
and RenderingInterface
Split EndPointInterface
into two dedicated interfaces RedirectingInterface
and RenderingInterface
- Create the interface CallbackStreamInterface to define Stream able to manage asynchronous callback content generation
- Split EastEndPointTrait, in several traits, by method' roles (Authentication, Exception, PSR Response Factory, Routing / Redirecting and Templating)
- Rework Symfony implementation to able to use any PSR 7 and PSR 17 implementation instead of Zend Diactoros
- Create an adapter of Diactoros CallbackStream implementing CallbackStreamInterface
- Add Teknoo\East\Diactoros\CallbackStreamFactory to provide a StreamFactory for Teknoo\East\Diactoros\CallbackStream
- Complete Tests
- Update dev tools, migrate to PHPUnit 9.0, phploc 6.0, phpcpd 5.0
- Support symfony/psr-http-message-bridge also 2.0
- Migrate Symfony implementation to infrastructures
- Fix in Symfony Configuration the TreeBuilder Configuration to remove deprecated defintion of root.
- Fix QA
- Require Teknoo State 4.0.1+
- Update requirement for dev tools
- Allow developpers to pass some header into HTTP Response in EndPointInterface
- Allow developpers to pass some header into HTTP Response in EndPointInterface
- Update copyright
- Update router in East foundation Symfony bridge to ignore Symfony controller to avoid interferences with basic controllers
- Fix Make definitions tools
- Fix QA issues spotted by PHPStan
- Enable PHPStan extension dedicated to support Stated classes
- Enable PHPStan in QA Tools
- Set
Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
into Symfony's services definitions to avoid compilation error with Symfony 4.4
- Set
Teknoo\East\Foundation\Manager\ManagerInterface
andTeknoo\East\Foundation\Http\ClientInterface
as synthetic services into Symfony's services definitions to avoid compilation error with Symfony 4.4
- Support zendframework/zend-diactoros 2.2
- PHP 7.4 is the minimum required
- Switch to typed properties
- Remove some PHP useless DockBlocks
- Replace array_merge by "..." operators for integer indexed arrays
- Restrict to Symfony 4.4 or 5.+ and remove some deprecated
- Maintenance release, QA and update dev vendors requirements
- Maintenance release, upgrade composer dev requirement and libs
- Remove support PHP 7.2
- Remove support Symfony 4.0 and 4.1, keep 3.4 (LTS)
- Migrate to PHPUnit 8.0
- First stable release
- Check technical debt - Add PHP 7.3 support
- Fix Symfony Router bridge to remove /index.php from url path with Sf4.
- Complete tests
- Fix Recipe bowl, they have an extra looping because the loop counter had a bug.
- Fix recipe compiling when several steps share the same name, firsts was lost.
Stable release
- Update RecipeEndPoint to use the "ReserveAndBegin" behavior of Recipe's chef.
- Documentation
- fix processor to prevent overwriting of client, manager or request vars
- Use Teknoo/Recipe 1.1.0
- Replace Bowl in the Processor to call the controller and selecting good parameters from the work plan by a subrecipe, defined by ProcessorRecipeInterface and using a DynamicBowl to delegate this operation directly to Recipe.
- Update the Behat test to use directly the container PHP-DI.
- ProcessorRecipeInterface to define subrecipe dedicated to extract the controller from the router result, inject it into the work plan to be executed by the DynamicBowl defined in the container.
- LoopDetectorInterface and LoopDetector to allow looping on the processor subrecipe unitl there all results from the router have not been processed.
- Result from the router will not been injected into the request parameter. They are only available in the work plan.
Stable release of 0.0.7
- update normalizer for symfony serializer for east object to manage non scalar attribute and pass them to another normalizer (aware behavior)
- Create normalizers interface and normalizer for symfony serializer for east object
- Bad return type of conditional interfaces.
- Add interfaces to define objects able to test if two object are equals, lower or greater
- Use PHP-DI 6 instead of PHP-DI 5.
- Update recipe end point to add to workplan all values from request, and client and server request instance (not overrided)
- fix error when request attributes returned by request object is not an array
- RecipeEndPoint to use a recipe as endpoint.
- composer requirement (optional, only to use with Symfony) : require symfony/psr-http-message-bridge 1.0+ and zendframework/zend-diactoros 1.7+
- Build on recipe.
- Rollback commit "Fix proprity in kernel event listener for symfony bridge" to fix bug with symfony firewall
- Optimize Kern el Event Listener in Symfony bridge
- Deprecation with Symfony 3.4+
- Processor injects query params and body parsed into the workplan
- fix security fault to avoid query param or var from body parser overload the request attributes
- Symfony optional support requires now 3.4-rc1 or 4.0-rc1
- Remove soft dependency to twig, replaced by Symfony\Component\Templating\EngineInterface, implemented by twig bundle
- Remove useless dependency to logger in the processor (sinc Recipe)
- Add Behat tests
- Issue when the controller is a static method, defined in string representation.
- Symfony Client implementation, error are now thrown to be managed by the Symfony stack directly and use Symfony error layout
- Symfony KernelListener inject the Symfony request as argument into the PSR request to allow the processor to inject him when the endpoint need it
- Update the Processor to forbid overload of ServerRequest instance and Client instance by the request argument.
- Update the Processor to check if the parameter injected is of required type of the processed argument if this type is an object
- Prioritized routers behavior into manager
- Middleware behavior east compliant
- Router and Processor as middleware
- Client able to update it's response via a modifier callable
- Require teknoo/states 3.2 and remove deprecated teknoo/states-life-cyclable
- Use Teknoo/recipe as base and externalise middleware managements and requests execution to this library The configuration of middleware stay managed in the DI.
- Interface ManagerInterface will be updated to inherits ChefInterface from teknoo/recipe.
- New manager follows this new interface and inherits the Chef implementation from teknoo/recipe. It manages the work plan with request and client instance. Now the manager execute only the request via the recipe, not manage middleware.
- Interface RecipeInterface will be added, inherits RecipeInterface from teknoo/recipe and add the method to register middleware into the recipe and to keep the behavior with the old ManagerInterface of this library. A default implementation is provided
- Update DI to use this new behavior and replace the last manager.
- Processor reuse Bowl component from teknoo/recipe to maps arguments of the endpoint and call it.
- Promise are now managed by teknoo/recipe too.
- EastEndPointTrait use now StreamCallback to render a view and not call directly the view renderer
- Bad exception used in EastEndPointTrait for denied access exceptions, use now AccessDeniedHttpException.
- Switch to PSR7, with PHP-DI as container
- Update dev libraries used for this project and use now PHPUnit 6.2 for tests.
- Errors in EastFoundationCompilerPass when a needed service (twig, router or token_storage) is not available.
- First beta
- Complete documentations
- Rename EastEndPointTrait to EastEndPointTrait.
- Symfony Client support deep cloning.
- KernelListener clone client before use it.
- Add Promise immutable object to facilitate writing of East Controller
- Code style fix
- License file follow Github specs
- Add tools to checks QA, use
make qa
andmake test
,make
to initalize the project, (orcomposer update
). - Update Travis to use this tool
- Fix QA Errors
- Use last States library version
- Processor can extract POST values
- Update tests to check behavior on multiple request
- Fix bug with symfony sub request looping to manage uncatched exception
- Travis to check PHP 7.1
- Requires States 3.x libraries in beta
- Remove States Life Cyclable requirement in composer
- Service provider following PSR7
- Fix issue in namespace defined in composer file
- Fix CompilerPass in Symfony Bundle to support new Controller behavior
- Fix several mistakes
- fix errors in symfony bundle services.yml and add service container into router
- Update router to find controller callable from DI container
- Complete tests on Processor in universal package
- Rename the project "East Framework" to "East Foundation"
- Transform the bundle to universal package, usable with any PSR7 Framework, a Symfony Bundle is already provided.
- Behavior of Router : Must return a ResultInterface instance (a value object) with the callable to use as controller
- Behavior of Processor : Independent of Symfony, to use only Router's result.
- Support PSR-11 to be independent with Symfony
- Base Symfony Controller
- Remove dead code, useless with States 3.0
- Fix bad namespace in manager
- Travis configuration
- Migrate to States 3.0
- Improve optimization on call to native function and optimized
- Error when the framework is used with a lower configurations
- First stable release
- Improve documentation and add API Doc
- Fix CS Style
- Update Manager to use Teknoo / States to implement a defective behavior to avoid multiple requests by instance
- Update Client to use Teknoo / States to implement a defective behavior to avoid multiple requests by instance
- update processor to ignore non available controller and log info
- First release
- Add manager to manager routers and processing request
- Add router to analyze requests and find controller
- Add processor to instantiate controller and execute request
- Add client to manage and send response to client
- Add a kernel listener to intercept response from
- Add a abstract controller to replace symfony base controller for developpers.