Results::__construct()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 8
nc 3
nop 2
dl 0
loc 16
ccs 9
cts 9
cp 1
crap 4
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
/**
3
 * This file is part of the Tmdb package.
4
 *
5
 * (c) Vincent Faliès <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @author Vincent Faliès <[email protected]>
11
 * @copyright Copyright (c) 2017
12
 */
13
14
15
namespace VfacTmdb\Abstracts;
16
17
use VfacTmdb\Exceptions\NotFoundException;
18
use VfacTmdb\Interfaces\Results\ResultsInterface;
19
use VfacTmdb\Interfaces\TmdbInterface;
20
21
/**
22
 * Abstract results class
23
 * @package Tmdb
24
 * @author Vincent Faliès <[email protected]>
25
 * @copyright Copyright (c) 2017
26
 */
27
abstract class Results implements ResultsInterface
28
{
29
    /**
30
     * Properties to ignore in object control validation in constructor
31
     * @var array
32
     */
33
    protected $property_blacklist = ['property_blacklist', 'conf', 'data', 'logger', 'tmdb', 'params', 'element_trait', 'tvepisode_trait'];
34
    /**
35
     * Logger object
36
     * @var \Psr\Log\LoggerInterface
37
     */
38
    protected $logger = null;
39
    /**
40
     * Configuration array
41
     * @var \stdClass
42
     */
43
    protected $conf = null;
44
    /**
45
     * Tmdb object
46
     * @var TmdbInterface
47
     */
48
    protected $tmdb = null;
49
    /**
50
     * Data object
51
     * @var \stdClass
52
     */
53
    protected $data = null;
54
55
    /**
56
     * Constructor
57
     * @param TmdbInterface $tmdb
58
     * @param \stdClass $result
59
     * @throws NotFoundException
60
     */
61 603
    public function __construct(TmdbInterface $tmdb, \stdClass $result)
62
    {
63 603
        $this->logger = $tmdb->getLogger();
64
65
        // Valid input object
66 603
        $properties = get_object_vars($this);
67 603
        foreach (array_keys($properties) as $property) {
68 603
            if (!in_array($property, $this->property_blacklist) && !property_exists($result, $property)) {
69 408
                throw new NotFoundException($property);
70
            }
71
        }
72
73
        // Configuration
74 585
        $this->conf = $tmdb->getConfiguration();
75 585
        $this->data = $result;
76 585
        $this->tmdb = $tmdb;
77 585
    }
78
}
79