Completed
Push — master ( b659c5...c65770 )
by Michael
10:22
created

YEMAwareTrait::setYem()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
declare(strict_types = 1);
3
/**
4
 * Contains trait YEMAwareTrait.
5
 *
6
 * PHP version 7.0
7
 *
8
 * LICENSE:
9
 * This file is part of Yet Another Php Eve Api Library also know as Yapeal
10
 * which can be used to access the Eve Online API data and place it into a
11
 * database.
12
 * Copyright (C) 2016-2017 Michael Cummings
13
 *
14
 * This program is free software: you can redistribute it and/or modify it
15
 * under the terms of the GNU Lesser General Public License as published by the
16
 * Free Software Foundation, either version 3 of the License, or (at your
17
 * option) any later version.
18
 *
19
 * This program is distributed in the hope that it will be useful, but WITHOUT
20
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
22
 * for more details.
23
 *
24
 * You should have received a copy of the GNU Lesser General Public License
25
 * along with this program. If not, see
26
 * <http://spdx.org/licenses/LGPL-3.0.html>.
27
 *
28
 * You should be able to find a copy of this license in the COPYING-LESSER.md
29
 * file. A copy of the GNU GPL should also be available in the COPYING.md file.
30
 *
31
 * @copyright 2016-2017 Michael Cummings
32
 * @license   LGPL-3.0+
33
 * @author    Michael Cummings <[email protected]>
34
 */
35
namespace Yapeal\Event;
36
37
/**
38
 * Trait YEMAwareTrait.
39
 */
40
trait YEMAwareTrait
41
{
42
    /**
43
     * @return MediatorInterface
44
     * @throws \LogicException
45
     */
46 30
    public function getYem(): MediatorInterface
47
    {
48 30
        if (null === $this->yem) {
49
            $parent = get_parent_class($this);
50
            if ($parent instanceof YEMAwareInterface) {
51
                $this->yem = $parent->getYem();
52
            } elseif (method_exists($this, 'getDic')) {
53
                $this->yem = $this->getDic()['Yapeal.Event.Callable.Mediator'];
0 ignored issues
show
Bug introduced by
It seems like getDic() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
54
            } else {
55
                $mess = 'Tried to use yem before it was set';
56
                throw new \LogicException($mess);
57
            }
58
        }
59 30
        return $this->yem;
60
    }
61
    /**
62
     * @return bool
63
     */
64
    public function hasYem(): bool
65
    {
66
        return null !== $this->yem;
67
    }
68
    /**
69
     * @param MediatorInterface $value
70
     *
71
     * @return static Fluent interface.
72
     */
73 36
    public function setYem(MediatorInterface $value)
74
    {
75 36
        $this->yem = $value;
76 36
        return $this;
77
    }
78
    /**
79
     * @var MediatorInterface $yem
80
     */
81
    private $yem;
82
}
83