Skip to content
This repository has been archived by the owner on Jul 24, 2023. It is now read-only.

Commit

Permalink
Clone ForwardsCalls trait locally for Laravel 5.5/5.6 support
Browse files Browse the repository at this point in the history
Closes #872
  • Loading branch information
stevebauman committed Jun 2, 2020
1 parent fe13cb4 commit d3674c8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
1 change: 0 additions & 1 deletion src/Auth/DatabaseUserProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
use Illuminate\Support\Facades\Bus;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Traits\ForwardsCalls;

/** @mixin EloquentUserProvider */
class DatabaseUserProvider extends UserProvider
Expand Down
56 changes: 56 additions & 0 deletions src/Auth/ForwardsCalls.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace Adldap\Laravel\Auth;

use Error;
use BadMethodCallException;

trait ForwardsCalls
{
/**
* Forward a method call to the given object.
*
* @param mixed $object
* @param string $method
* @param array $parameters
*
* @throws BadMethodCallException
*
* @return mixed
*/
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
*
* @throws BadMethodCallException
*
* @return void
*/
protected static function throwBadMethodCallException($method)
{
throw new BadMethodCallException(sprintf(
'Call to undefined method %s::%s()', static::class, $method
));
}
}

0 comments on commit d3674c8

Please sign in to comment.