Download the PHP package t4web/actioninjections without Composer
On this page you can find all versions of the php package t4web/actioninjections. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download t4web/actioninjections
More information about t4web/actioninjections
Files in t4web/actioninjections
Package actioninjections
Short Description ZF2 Module wich allows to inject dependencies in controller action
License BSD-3-Clause
Homepage https://github.com/robaks/ActionInjections
Informations about the package actioninjections
ActionInjections
Introduction
ZF2 Module wich allows to inject dependencies in controller action for better incapsulate testing and remove controller dependency from ServiceLocator.
Problem: I have simply CRUD Controller, with actions "create", "update", "show", "delete", i have 3 dependency in action "delete": ViewModel, Request, some Service.
in this case i can't easy test this controller, because:
- I can't mock ViewModel (constructor calling)
- Very difficult create test for this $this->getRequest()->getPost()->get('id', 0);
- Nobody understand dependencies in current controller, because $this->getServiceLocator()->get('SomeService') inside controller - is bad practice
Ok, refactor it..
Problem: I have simply CRUD Controller, with actions "create", "update", "show", "delete", i have 3 dependency in action "delete": ViewModel, Request, some Service. For height testability i add all dependencies in Controller::__constructor().
in this case i can easy test this controller, but:
- I have to big __constructor (almost god object)
- How many mock's i must create for test on method "delete"?
- Nobody understand where i use each dependency in current controller
- I must test ControllerFactory
Solution: use t4web/ActionInjections
Add in your module.config.php section controller_action_injections
where request
, Timesheet\Controller\ViewModel\AjaxViewModel
, Timesheet\Timesheet\Service\Delete
your dependecies, and just use it in your controller action
and test it:
very fast, easy, readable, incapsulate unit test.
Requirements
- Zend Framework 2 (latest master)
Installation
Main Setup
By cloning project
Clone this project into your ./vendor/
directory.
With composer
Add this project in your composer.json:
Now tell composer to download Authentication by running the command:
Post installation
Not need enabling it in your application.config.php
file, just extends from T4webActionInjections\Mvc\Controller\AbstractActionController
Testing
Unit test runnig from authentication module directory.
All versions of actioninjections with dependencies
zendframework/zend-loader Version ~2.5.0
zendframework/zend-modulemanager Version ~2.5.0
zendframework/zend-mvc Version ~2.5.0
zendframework/zend-servicemanager Version ~2.5.0
zendframework/zend-view Version ~2.5.0