v.0.1
This commit is contained in:
		
							
								
								
									
										54
									
								
								vendor/illuminate/support/Traits/ForwardsCalls.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/illuminate/support/Traits/ForwardsCalls.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,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
 | 
			
		||||
        ));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user