mnapoli / php-di-zf2
Integrates PHP-DI to Zend Framework 2
Installs: 1 328
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 4
Forks: 14
Open Issues: 1
Requires
- php: >=5.5
- acclimate/container: ~1.0 || ~2.0
- doctrine/annotations: ~1.0
- doctrine/cache: ~1.0
- php-di/php-di: ~5.0
Requires (Dev)
- phpmd/phpmd: ~2.0
- phpunit/phpunit: ~4.8.35
- squizlabs/php_codesniffer: ~2.0
- zendframework/zendframework: ^2.5
README
This library provides integration for PHP-DI with Zend Framework 2.
PHP-DI is a Dependency Injection Container for PHP.
If you are looking for Zend Framework 1 integration, head over here.
Use
Require the libraries with Composer:
{ "require": { "php-di/php-di": "*", "php-di/zf2-bridge": "*" } }
To use PHP-DI in your ZF2 application, you need to edit application_root/config/application.config.php
:
// ... 'modules' => [ ... 'DI\ZendFramework2', ... ], 'service_manager' => [ // ... 'factories' => [ 'DI\Container' => 'DI\ZendFramework2\Service\DIContainerFactory', ], ],
That's it!
Now you dependencies are injected in your controllers!
If you'd like to specify the di configuration yourself, create this file: application_root/config/php-di.config.php
and save it with your PHP DI configuration e.g. like this:
return [
'Application\Service\GreetingServiceInterface' => Di\object('Application\Service\GreetingService'),
];
Head over to PHP-DI's documentation if needed.
Fine tuning
To configure the module, you have to override the module config somewhere at config/autoload/global.php or config/autoload/local.php.
return [ 'phpdi-zf2' => [ ... ] ];
Override definitions file location
return [ 'phpdi-zf2' => [ 'definitionsFile' => realpath(__DIR__ . '/../my.custom.def.config.php'), ] ];
Enable or disable annotations
return [ 'phpdi-zf2' => [ 'useAnntotations' => true, ] ];
Enable APCu
return [ 'phpdi-zf2' => [ 'cache' => [ 'adapter' => 'apcu', 'namespace' => 'your_di_cache_key', ], ] ];
Enable file cache
return [ 'phpdi-zf2' => [ 'cache' => [ 'adapter' => 'filesystem', 'namespace' => 'your_di_cache_key', 'directory' => 'your_cache_directory', // default value is data/php-di/cache ], ] ];
Enable redis cache
If you are also using Redis for storing php sessions, it is very useful to configure the php-di cache handler to use a different database, since you might accidentally delete all your sessions when clearing the php-di definitions cache.
return [ 'phpdi-zf2' => [ 'cache' => [ 'namespace' => 'your_di_cache_key', 'adapter' => 'redis', 'host' => 'localhost', // default is localhost 'port' => 6379, // default is 6379 'database' => 1, // default is the same as phpredis default ], ] ];
Enable Memcached cache
If you're using Memcached, you should have only one project per memcached instance.
return [ 'phpdi-zf2' => [ 'cache' => [ 'adapter' => 'memcached', 'host' => 'localhost', // default is localhost 'port' => 11211, // default is 11211 ], ] ];
Console commands
Clear definition cache
To clear the definition cache, run the following command from the project root:
php public/index.php php-di-clear-cache