skalpa/silex-doctrine-annotations-provider

Doctrine annotations service provider for Pimple 3.x / Silex 2.x

v1.0.0 2017-04-12 01:06 UTC

This package is not auto-updated.

Last update: 2024-04-13 18:18:11 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

Doctrine Annotations Service Provider for Silex 2.x / Pimple 3.x

Lets you to use the Doctrine annotations reader in your Silex/Pimple application.

Installation

Install the service provider using composer:

composer require skalpa/silex-doctrine-annotations-provider

Registration

$app->register(new \Skalpa\Silex\Doctrine\AnnotationsServiceProvider());

$fooAnnotations = $app['annotations']->getClassAnnotations(new \ReflectionClass('Foobar\FooClass'));

Configuration parameters

Parameter Type Default Description
annotations.use_simple_reader bool false Whether to use the Doctrine AnnotationReader or SimpleAnnotationReader class
annotations.register_autoloader bool true Whether to autoload annotations using the PHP autoloader
annotations.cache string|Cache ArrayCache Doctrine\Common\Cache\Cache instance or name of a service that implements Doctrine\Common\Cache\Cache
annotations.debug bool $app['debug'] Whether the cached reader should invalidate the cache files when the PHP class with annotations changed
annotations.ignored_names string[] [] List of names that should be ignored by the annotations reader (Note: this is not supported by the SimpleAnnotationReader)

Configuring the annotations cache

By default the cache used by the annotations reader is an ArrayCache, which is probably not something you'll want to use on a production server.

If you already use a Doctrine Cache service provider and want to use an already registered cache service, set annotations.cache to the name of the service:

// The DoctrineCacheServiceProvider will register a service named "cache"
$app->register(new DoctrineCacheServiceProvider());

// Cache annotations using the "cache" service
$app->register(new AnnotationsServiceProvider(), [
    'annotations.cache' => 'cache',
]);

Alternatively, you can override the annotations.cache service and provide your own cache provider:

$app->register(new AnnotationsServiceProvider(), [
    'annotations.cache' => function () {
        $cache = new \Doctrine\Common\Cache\PhpFileCache(__DIR__.'/cache);
        $cache->setNamespace('annotations');

        return $cache;
    },
]);