Add the requirement to your composer.json file and register it with you Application.
{
"require" : {
"bernard/silex" : "~0.4@dev"
}
}<?php
$app = new Silex\Application;
$app->register(new Bernard\Silex\BernardServiceProvider, array(
'bernard.options' => array(
'driver' => 'doctrine', // or redis, predis, sqs, iron_mq
'serializer' => 'symfony', // or jms or simple
),
));After that you have to make a decision about what driver and what kind of Serializer you want to use.
The following serializers are supported:
- Simple. No dependencies and it is the default.
- JMS Serializer. Requires a service with id
jms_serializerandjms_serializer.builderis present. - Symfony Serializer. Requires
SerializerServiceProvideris registered before this provider.
The following drivers are supported:
- Doctrine DBAL requires
DoctrineServiceProviderwhere it try and use abernardconnection. - Predis requires https://github.com/nrk/PredisServiceProvider and a
predisservice. If you use the multi service provider, you should overwritebernard.predis_driverand do a custom service. - Redis extension. Requires http://pecl.php.net/package/redis to be installed and a
redisservice. - Amazon SQS requires AWS SDK PHP version 2 or creater and https://github.com/aws/aws-sdk-php-silex.
- Iron.MQ requires
iron-io/iron_mqpackage and airon_mqservice.
The ServiceResolver enabled supports service ids. This means they are lazy loaded when they are needed instead of when they are registering.
Register bernard.services with an array of MessageName => ServiceId like so:
<?php
$app['bernard.receivers'] = array(
'ImportUsers' => 'users_worker',
);If there is a service named console the consume command will be automatically registred. For advanced
usecases see the official documentation on Bernard.
