Conditions | 3 |
Paths | 3 |
Total Lines | 15 |
Code Lines | 6 |
Lines | 0 |
Ratio | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
1 | <?php |
||
17 | public function getLink(string $name) |
||
18 | { |
||
19 | if (!property_exists($this, 'links')) { |
||
20 | throw new NoLinkedResourceException('No linked resources for ' . get_called_class()); |
||
21 | } elseif (!property_exists($this->links, $name)) { |
||
22 | throw new LinkedResourceNotFoundException('No property exists for ' . $name . '. Available links are ' . implode(' ', array_keys((array) $this->links))); |
||
23 | } |
||
24 | |||
25 | /** |
||
26 | * Because the name of the property within the $links->property->$name object may change, we must avoid accessing it directly. |
||
27 | * The below converts the object into an array, obtains the values directly (bypassing the need to know the key), |
||
28 | * and retrieves the first (and only) item from the resultant array which will be our linked resource path. |
||
29 | */ |
||
30 | $path = current(array_values((array) $this->links->$name)); |
||
31 | return ['type' => $name, 'path' => $path]; |
||
32 | } |
||
34 |