searchers = $searchers; $this->content = $content; ksort($this->searchers); } public function execute() { $mapper = new Mapper(); $validSearchers = $mapper->getSearchers(); // The object should contain the searcher name, other info, like the user input. $dimensions = []; foreach ($this->searchers as $orderNumber => $searcher) { if ( ! in_array($searcher['key'], $validSearchers)) { throw new \Exception('Invalid searcher: ' . $searcher['key']); } $dimensions[] = $searcher['key']; } $duckling = new Duckling(); return $duckling->execute($this->content, $dimensions); } }