vendor/thecodingmachine/graphqlite/src/Middlewares/SourceResolver.php line 49

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace TheCodingMachine\GraphQLite\Middlewares;
  4. use TheCodingMachine\GraphQLite\GraphQLRuntimeException;
  5. use Webmozart\Assert\Assert;
  6. use function get_class;
  7. use function is_object;
  8. /**
  9.  * A class that represents a callable on an object.
  10.  * The object can be modified after class invocation.
  11.  *
  12.  * @internal
  13.  */
  14. class SourceResolver implements SourceResolverInterface
  15. {
  16.     /** @var string */
  17.     private $methodName;
  18.     /** @var object|null */
  19.     private $object;
  20.     public function __construct(string $methodName)
  21.     {
  22.         $this->methodName $methodName;
  23.     }
  24.     public function setObject(object $object): void
  25.     {
  26.         $this->object $object;
  27.     }
  28.     public function getObject(): object
  29.     {
  30.         Assert::notNull($this->object);
  31.         return $this->object;
  32.     }
  33.     /**
  34.      * @param mixed $args
  35.      *
  36.      * @return mixed
  37.      */
  38.     public function __invoke(...$args)
  39.     {
  40.         if ($this->object === null) {
  41.             throw new GraphQLRuntimeException('You must call "setObject" on SourceResolver before invoking the object.');
  42.         }
  43.         $callable = [$this->object$this->methodName];
  44.         Assert::isCallable($callable);
  45.         return $callable(...$args);
  46.     }
  47.     public function toString(): string
  48.     {
  49.         $class $this->getObject();
  50.         if (is_object($class)) {
  51.             $class get_class($class);
  52.         }
  53.         return $class '::' $this->methodName '()';
  54.     }
  55. }