CapsuleManagerTrait.php
2 years ago
ForwardsCalls.php
2 years ago
Localizable.php
2 years ago
ReflectsClosures.php
2 years ago
Tappable.php
6 months ago
ForwardsCalls.php
66 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWPSCOPED\Illuminate\Support\Traits; |
| 4 | |
| 5 | use BadMethodCallException; |
| 6 | use Error; |
| 7 | /** @internal */ |
| 8 | trait ForwardsCalls |
| 9 | { |
| 10 | /** |
| 11 | * Forward a method call to the given object. |
| 12 | * |
| 13 | * @param mixed $object |
| 14 | * @param string $method |
| 15 | * @param array $parameters |
| 16 | * @return mixed |
| 17 | * |
| 18 | * @throws \BadMethodCallException |
| 19 | */ |
| 20 | protected function forwardCallTo($object, $method, $parameters) |
| 21 | { |
| 22 | try { |
| 23 | return $object->{$method}(...$parameters); |
| 24 | } catch (Error|BadMethodCallException $e) { |
| 25 | $pattern = '~^Call to undefined method (?P<class>[^:]+)::(?P<method>[^\\(]+)\\(\\)$~'; |
| 26 | if (!\preg_match($pattern, $e->getMessage(), $matches)) { |
| 27 | throw $e; |
| 28 | } |
| 29 | if ($matches['class'] != \get_class($object) || $matches['method'] != $method) { |
| 30 | throw $e; |
| 31 | } |
| 32 | static::throwBadMethodCallException($method); |
| 33 | } |
| 34 | } |
| 35 | /** |
| 36 | * Forward a method call to the given object, returning $this if the forwarded call returned itself. |
| 37 | * |
| 38 | * @param mixed $object |
| 39 | * @param string $method |
| 40 | * @param array $parameters |
| 41 | * @return mixed |
| 42 | * |
| 43 | * @throws \BadMethodCallException |
| 44 | */ |
| 45 | protected function forwardDecoratedCallTo($object, $method, $parameters) |
| 46 | { |
| 47 | $result = $this->forwardCallTo($object, $method, $parameters); |
| 48 | if ($result === $object) { |
| 49 | return $this; |
| 50 | } |
| 51 | return $result; |
| 52 | } |
| 53 | /** |
| 54 | * Throw a bad method call exception for the given method. |
| 55 | * |
| 56 | * @param string $method |
| 57 | * @return void |
| 58 | * |
| 59 | * @throws \BadMethodCallException |
| 60 | */ |
| 61 | protected static function throwBadMethodCallException($method) |
| 62 | { |
| 63 | throw new BadMethodCallException(\sprintf('Call to undefined method %s::%s()', static::class, $method)); |
| 64 | } |
| 65 | } |
| 66 |