strategyResolver = new SubcommandStrategyResolver(); } public function getId() { return 'FUNCTION'; } public function setArguments(array $arguments) { $strategy = $this->strategyResolver->resolve('functions', strtolower($arguments[0])); $arguments = $strategy->processArguments($arguments); parent::setArguments($arguments); $this->filterArguments(); } }