Skip to content

PHP-DI/ZF2-Bridge

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PHP-DI integration with Zend Framework 2

Build Status

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