Symfony bundle for my Class Meta library. This allows you to attach arbitrary metadata to classes and their constants via annotation.
To install via composer, use the following command:
$ composer require ashleydawson/class-meta-bundle
And then add the bundle to the AppKernel#registerBundles()
method:
$bundles = [
// ...
new AshleyDawson\ClassMetaBundle\AshleyDawsonClassMetaBundle(),
];
Configuration allows you to set a cache provider. By default the cache provider is ArrayCache - so in production, I'd advise you change this to a more persistent cache strategy:
# app/config/config.yml
services:
my_class_meta_cache_provider:
class: Doctrine\Common\Cache\FilesystemCache
arguments: [ "%kernel.cache_dir%/ashleydawson/class_meta" ]
ashley_dawson_class_meta:
cache_provider_service_id: my_class_meta_cache_provider # Cache provider service ID (optional)
cache_provider_ttl: 300 # 5 minutes TTL (optional)
Note: The cache is invalidated by file modify time, but if you want to also add a TTL (Time-to-live) to the cache it can be done via the cache_provider_ttl
parameter.
Note: To disable the cache, simply pass the id of a Doctrine\Common\Cache\VoidCache
service.
To use the meta cache manager service in a controller, simply do:
public function indexAction()
{
$meta = $this->get('ashleydawson.class_meta')->getClassConstantsMeta('AppBundle\Enum\MyEnum');
dump($meta);
}
For more documentation, please see the full library readme.