Blame view

public/vendor/illuminate/support/Traits/ForwardsCalls.php 1.33 KB
86143e36f   Андрей Ларионов   Коммит вторник
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  <?php
  
  namespace Illuminate\Support\Traits;
  
  use BadMethodCallException;
  use Error;
  
  trait ForwardsCalls
  {
      /**
       * Forward a method call to the given object.
       *
       * @param  mixed  $object
       * @param  string  $method
       * @param  array  $parameters
       * @return mixed
       *
       * @throws \BadMethodCallException
       */
      protected function forwardCallTo($object, $method, $parameters)
      {
          try {
              return $object->{$method}(...$parameters);
          } catch (Error|BadMethodCallException $e) {
              $pattern = '~^Call to undefined method (?P<class>[^:]+)::(?P<method>[^\(]+)\(\)$~';
  
              if (! preg_match($pattern, $e->getMessage(), $matches)) {
                  throw $e;
              }
  
              if ($matches['class'] != get_class($object) ||
                  $matches['method'] != $method) {
                  throw $e;
              }
  
              static::throwBadMethodCallException($method);
          }
      }
  
      /**
       * Throw a bad method call exception for the given method.
       *
       * @param  string  $method
       * @return void
       *
       * @throws \BadMethodCallException
       */
      protected static function throwBadMethodCallException($method)
      {
          throw new BadMethodCallException(sprintf(
              'Call to undefined method %s::%s()', static::class, $method
          ));
      }
  }