QueueServiceProvider   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 34
ccs 0
cts 24
cp 0
rs 10
wmc 5
lcom 0
cbo 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 3 1
A register() 0 21 4
1
<?php
2
namespace Wandu\Q;
3
4
use Aws\Sqs\SqsClient;
5
use Pheanstalk\PheanstalkInterface;
6
use Wandu\Config\Contracts\Config;
7
use Wandu\DI\ContainerInterface;
8
use Wandu\DI\ServiceProviderInterface;
9
use Wandu\Q\Adapter\BeanstalkdAdapter;
10
use Wandu\Q\Adapter\NullAdapter;
11
use Wandu\Q\Adapter\SqsAdapter;
12
use Wandu\Q\Contracts\Adapter;
13
use Wandu\Q\Contracts\Serializer;
14
use Wandu\Q\Serializer\JsonSerializer;
15
use Wandu\Q\Serializer\PhpSerializer;
16
17
class QueueServiceProvider implements ServiceProviderInterface
18
{
19
    /**
20
     * {@inheritdoc}
21
     */
22
    public function register(ContainerInterface $app)
23
    {
24
        $app->closure(Serializer::class, function (Config $config) {
25
            switch ($config->get('q.serializer')) {
26
                case 'json':
27
                    return new JsonSerializer();
28
            }
29
            return new PhpSerializer();
30
        });
31
        $app->closure(Adapter::class, function (ContainerInterface $app, Config $config) {
32
            switch ($config->get('q.type')) {
33
                case 'beanstalkd':
34
                    $app->assert(PheanstalkInterface::class, 'pda/pheanstalk');
35
                    return new BeanstalkdAdapter($app->get(PheanstalkInterface::class));
36
                case 'sqs':
37
                    $app->assert(SqsClient::class, 'aws/aws-sdk-php');
38
                    return new SqsAdapter($app->get(SqsClient::class), $config->get('q.sqs.url'));
39
            }
40
            return new NullAdapter();
41
        });
42
    }
43
44
    /**
45
     * {@inheritdoc}
46
     */
47
    public function boot(ContainerInterface $app)
48
    {
49
    }
50
}
51