| 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(get_object_vars($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 |