private final function setResult($type, $name, $value, $is_list) { if (FALSE === Kit::in($type, ['data', 'status', 'process'])) { throw new UserException('Invalid $type.', $type); } Kit::ensureString($name); if ('' === $name) { throw new UserException('$name is an empty string.', $type); } if (TRUE === isset($this->result[$type][$name])) { if (TRUE === $is_list) { if (TRUE === Kit::isList($this->result[$type][$name])) { $this->result[$type][$name][] = $value; } else { $msg = "\$this->result[{$type}][{$name}] is a non-empty non-list variable."; throw new UserException($msg, $this->result[$type][$name]); } } else { $this->result[$type][$name] = $value; } } else { if (TRUE === $is_list) { $this->result[$type][$name] = [$value]; } else { $this->result[$type][$name] = $value; } } return $value; }