separator = $separator; } /** * {@inheritDoc} */ public function resolve(string $commandId, string $subcommandId): SubcommandStrategyInterface { $subcommandStrategyClass = ucwords($subcommandId) . 'Strategy'; $commandDirectoryName = ucwords($commandId); if (!is_null($this->separator)) { $subcommandStrategyClass = str_replace($this->separator, '', $subcommandStrategyClass); $commandDirectoryName = str_replace($this->separator, '', $commandDirectoryName); } if (class_exists( $containerCommandClass = self::CONTAINER_COMMANDS_NAMESPACE . '\\' . $commandDirectoryName . '\\' . $subcommandStrategyClass )) { return new $containerCommandClass(); } throw new InvalidArgumentException('Non-existing container command given'); } }