Completed
Push — master ( fbc7c8...750795 )
by Iman
02:06
created

PresenterNormalizer::checkPresenterExists()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 1
1
<?php
2
3
namespace Imanghafoori\Widgets\Utils\Normalizers;
4
5
class PresenterNormalizer
6
{
7
    /**
8
     * Figures out which method should be called as the presenter
9
     * @return null
10
     */
11
    public function normalizePresenterName($widget)
12
    {
13
        if ($widget->presenter !== 'default') {
14
            $presenter = $widget->presenter;
15
            $this->checkPresenterExists($presenter);
16
        } else {
17
            $presenter = get_class($widget) . 'Presenter';
18
            if (!class_exists($presenter)) {
19
                return $widget->presenter = null;
20
            }
21
        }
22
23
        $this->checkPresentMethodExists($presenter);
24
25
        $widget->presenter = $presenter . '@present';
26
    }
27
28
    /**
29
     * @param $presenter
30
     */
31
    private function checkPresentMethodExists($presenter)
32
    {
33
        if (!method_exists($presenter, 'present')) {
34
            throw new \InvalidArgumentException("'present' method not found on : " . $presenter);
35
        }
36
    }
37
38
    /**
39
     * @param $presenter
40
     */
41
    private function checkPresenterExists($presenter)
42
    {
43
        if (!class_exists($presenter)) {
44
            throw new \InvalidArgumentException("Presenter Class [{$presenter}] not found.");
45
        }
46
    }
47
}
48