signature = $signature; $this->parameterParser = $container->get(ParameterParser::class); parent::__construct(); $options = $this->parameterParser->parseMethodOptions($class, $method); $definition = $this->getDefinition(); foreach ($options as $option) { $name = $option->getName(); $snakeName = Str::snake($option->getName(), '-'); if ( $definition->hasOption($name) || $definition->hasArgument($name) || $definition->hasOption($snakeName) || $definition->hasArgument($snakeName) ) { continue; } $definition->addOption($option); } } public function handle() { $inputs = array_merge($this->input->getArguments(), $this->input->getOptions()); $parameters = $this->parameterParser->parseMethodParameters($this->class, $this->method, $inputs); $instance = $this->container->get($this->class); if (in_array(InteractsWithIO::class, class_uses_recursive($this->class))) { $instance->setInput($this->input); $instance->setOutput($this->output); } (fn ($method) => $this->{$method}(...$parameters))->call($instance, $this->method); } }