reflectionType->getName()) { 'array' => ArrayFormat::class, 'mixed', 'object' => MixedFormat::class, 'int', 'string', 'bool' => OtherFormat::class, 'void' => VoidFormat::class, default => ResponseFormat::class }; $this->format = di($type); } /** * @return bool */ public function isClosure(): bool { return $this->handler instanceof Closure; } /** * @param string $interface * @return bool */ public function implement(string $interface): bool { if (!$this->isClosure()) { return $this->handler[0] instanceof $interface; } return false; } /** * @return string|null */ public function getClass(): ?string { if ($this->isClosure()) { return null; } return $this->handler[0]::class; } /** * @return string|null */ public function getMethod(): ?string { if ($this->isClosure()) { return null; } return $this->handler[1]; } /** * @param ServerRequestInterface $request * @return ResponseInterface * @throws ReflectionException */ public function handle(ServerRequestInterface $request): ResponseInterface { $data = call_user_func($this->handler, ...$this->parameter); return call_user_func([$this->format, 'call'], $data); } }