Completed
Push — master ( 56570e...2c8793 )
by Gabriel
07:17
created

ClassInstanceStage::hasClassAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Nip\Dispatcher\Resolver\Pipeline\Stages;
4
5
use Nip\Controllers\Controller;
6
use Nip\Dispatcher\Exceptions\InvalidCommandException;
7
use Nip\Dispatcher\Resolver\Cache\ResolverCache;
8
use Nip\Dispatcher\Resolver\ClassResolver;
9
10
/**
11
 * Class ClassInstanceStage
12
 * @package Nip\Dispatcher\Resolver\Pipeline\Stages
13
 */
14
class ClassInstanceStage extends AbstractStage
15
{
16
    /**
17
     * @return void
18
     * @throws \Exception
19
     */
20 4
    public function processCommand()
21
    {
22 4
        if (!$this->hasInstanceAction() && $this->hasClassAction()) {
23 2
            $this->buildController();
24
        }
25 4
    }
26
27
    /**
28
     * @throws \Exception
29
     */
30 2
    protected function buildController()
31
    {
32 2
        $controllerNames = $this->getCommand()->getActionParam('class');
33 2
        $controller = ClassResolver::resolveFromClasses($controllerNames);
34
35 2
        if ($controller) {
36 2
            ResolverCache::setFromAction($this->getCommand()->getAction(), get_class($controller));
37 2
            ResolverCache::save();
38 2
            $this->getCommand()->setActionParam('instance', $controller);
39 2
            return;
40
        }
41
42
        throw new InvalidCommandException(
43
            "No valid controllers found for [" . print_r($controllerNames, true) . "]"
44
        );
45
    }
46
}
47