Completed
Pull Request — master (#4)
by Mathieu
02:51
created

ModelAwareTrait::setModel()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
namespace Charcoal\Source;
3
4
use Exception;
5
6
use Charcoal\Model\ModelInterface;
7
8
trait ModelAwareTrait
9
{
10
    /**
11
     * @var ModelInterface $model
12
     */
13
    private $model = null;
14
15
    /**
16
     * Set the source's Model.
17
     *
18
     * @param ModelInterface $model The source's model.
19
     * @return AbstractSource Chainable
20
     */
21
    public function setModel(ModelInterface $model)
22
    {
23
        $this->model = $model;
24
        return $this;
25
    }
26
27
    /**
28
     * Return the source's Model.
29
     *
30
     * @throws Exception If not model was previously set.
31
     * @return ModelInterface
32
     */
33
    public function model()
34
    {
35
        if ($this->model === null) {
36
            throw new Exception(
37
                'No model set.'
38
            );
39
        }
40
        return $this->model;
41
    }
42
43
    /**
44
     * @return boolean
45
     */
46
    public function hasModel()
47
    {
48
        return ($this->model !== null);
49
    }
50
}
51