ActionDispatcherDomain   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 1
cbo 3
dl 0
loc 36
ccs 0
cts 15
cp 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getAction() 0 11 3
1
<?php
2
3
namespace Majora\Framework\Domain;
4
5
use Majora\Framework\Domain\Action\ActionFactory;
6
7
/**
8
 * Base class for domains which uses distributed actions.
9
 */
10
class ActionDispatcherDomain extends AbstractDomain
11
{
12
    /**
13
     * @var ActionFactory
14
     */
15
    protected $actionFactory;
16
17
    /**
18
     * Construct.
19
     *
20
     * @param ActionFactory $actionFactory
21
     */
22
    public function __construct(ActionFactory $actionFactory)
23
    {
24
        $this->actionFactory = $actionFactory;
25
    }
26
27
    /**
28
     * Create and return a promise of $name action.
29
     *
30
     * @param string $name
31
     *
32
     * @return ActionInterface
33
     */
34
    public function getAction($name, $relatedEntity = null, ...$arguments)
35
    {
36
        return $this->actionFactory
37
            ->createAction($name)
38
            ->denormalize(isset($arguments[0]) && is_array($arguments[0]) ?
39
                $arguments[0] :
40
                array()
41
            )
42
            ->init($relatedEntity, ...$arguments)
43
        ;
44
    }
45
}
46