1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* ResourceObject.php |
4
|
|
|
* |
5
|
|
|
* @copyright More in license.md |
6
|
|
|
* @license https://www.ipublikuj.eu |
7
|
|
|
* @author Adam Kadlec <[email protected]> |
8
|
|
|
* @package iPublikuj:JsonAPIClient! |
9
|
|
|
* @subpackage Objects |
10
|
|
|
* @since 1.0.0 |
11
|
|
|
* |
12
|
|
|
* @date 05.05.18 |
13
|
|
|
*/ |
14
|
|
|
|
15
|
|
|
declare(strict_types = 1); |
16
|
|
|
|
17
|
|
|
namespace IPub\JsonAPIClient\Objects; |
18
|
|
|
|
19
|
|
|
use CloudCreativity\Utils\Object\StandardObject; |
20
|
|
|
use CloudCreativity\Utils\Object\StandardObjectInterface; |
21
|
|
|
|
22
|
|
|
use IPub\JsonAPIClient\Exceptions; |
23
|
|
|
|
24
|
|
|
/** |
25
|
|
|
* Resource object |
26
|
|
|
* |
27
|
|
|
* @package iPublikuj:JsonAPIClient! |
28
|
|
|
* @subpackage Objects |
29
|
|
|
* |
30
|
|
|
* @author Adam Kadlec <[email protected]> |
31
|
|
|
*/ |
32
|
|
|
class ResourceObject extends StandardObject implements IResourceObject |
33
|
|
|
{ |
34
|
|
|
use TIdentifiable; |
35
|
|
|
use TMetaMember; |
36
|
|
|
|
37
|
|
|
/** |
38
|
|
|
* {@inheritdoc} |
39
|
|
|
*/ |
40
|
|
|
public function getIdentifier() : IResourceIdentifier |
41
|
|
|
{ |
42
|
|
|
return ResourceIdentifier::create($this->getType(), $this->getId()); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* {@inheritdoc} |
47
|
|
|
*/ |
48
|
|
|
public function getAttributes() : StandardObjectInterface |
49
|
|
|
{ |
50
|
|
|
$attributes = $this->hasAttributes() ? $this->get(self::ATTRIBUTES) : new StandardObject(); |
51
|
|
|
|
52
|
|
|
if (!$attributes instanceof StandardObjectInterface) { |
|
|
|
|
53
|
|
|
throw new Exceptions\RuntimeException('Attributes member is not an object.'); |
54
|
|
|
} |
55
|
|
|
|
56
|
|
|
return $attributes; |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
/** |
60
|
|
|
* {@inheritdoc} |
61
|
|
|
*/ |
62
|
|
|
public function hasAttributes() : bool |
63
|
|
|
{ |
64
|
|
|
return $this->has(self::ATTRIBUTES); |
65
|
|
|
} |
66
|
|
|
|
67
|
|
|
/** |
68
|
|
|
* {@inheritdoc} |
69
|
|
|
*/ |
70
|
|
|
public function getRelationships() : IRelationships |
71
|
|
|
{ |
72
|
|
|
$relationships = $this->hasRelationships() ? $this->{self::RELATIONSHIPS} : NULL; |
73
|
|
|
|
74
|
|
|
if (!is_null($relationships) && !is_object($relationships)) { |
75
|
|
|
throw new Exceptions\RuntimeException('Relationships member is not an object.'); |
76
|
|
|
} |
77
|
|
|
|
78
|
|
|
return new Relationships($relationships); |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
/** |
82
|
|
|
* {@inheritdoc} |
83
|
|
|
*/ |
84
|
|
|
public function hasRelationships() : bool |
85
|
|
|
{ |
86
|
|
|
return $this->has(self::RELATIONSHIPS); |
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
/** |
90
|
|
|
* {@inheritdoc} |
91
|
|
|
*/ |
92
|
|
|
public function getRelationship(string $key) : IRelationship |
93
|
|
|
{ |
94
|
|
|
$relationships = $this->getRelationships(); |
95
|
|
|
|
96
|
|
|
return $relationships->has($key) ? $relationships->getRelationship($key) : NULL; |
97
|
|
|
} |
98
|
|
|
|
99
|
|
|
} |
100
|
|
|
|
This error could be the result of:
1. Missing dependencies
PHP Analyzer uses your
composer.json
file (if available) to determine the dependencies of your project and to determine all the available classes and functions. It expects thecomposer.json
to be in the root folder of your repository.Are you sure this class is defined by one of your dependencies, or did you maybe not list a dependency in either the
require
orrequire-dev
section?2. Missing use statement
PHP does not complain about undefined classes in
ìnstanceof
checks. For example, the following PHP code will work perfectly fine:If you have not tested against this specific condition, such errors might go unnoticed.