collector = new \Repo\Field\Collector(); } /** * Add required input(s). * @param string|array $input * @return \Workspace\UseCase\Requirement */ public function addRequiredInput($input) { $newStack = $this->collector->collect($input); foreach ($newStack as $group => $fieldSet) { isset($this->requiredFields[$group]) || $this->requiredFields[$group] = array(); isset($this->inputFields[$group]) || $this->inputFields[$group] = array(); foreach ($fieldSet as $field => $validation) { $this->requiredFields[$group][$field] = $field; } $this->inputFields[$group] = array_merge($this->inputFields[$group], $fieldSet); } return $this; } /** * Add optional input(s). * @param string|array $input * @return \Workspace\UseCase\Requirement */ public function addOptionalInput($input) { $newStack = $this->collector->collect($input); foreach ($newStack as $group => $fieldSet) { isset($this->inputFields[$group]) || $this->inputFields[$group] = array(); $this->inputFields[$group] = array_merge($this->inputFields[$group], $fieldSet); } return $this; } /** * Retrieve shortlist of required inputs. * @return array */ public function getRequirements() { return $this->requiredFields; } /** * Retrieve list of all inputs. * @return array */ public function getInputs() { return $this->inputFields; } }