options; } public function setOptions($options) { $tempCollect = collect($options); if (!$tempCollect->contains(fn($o) => !is_subclass_of($o, FieldOption::class))) { $this->options = $options; } } public function toArray(Asset $asset) { return Field::makeArray($this, $asset); } /* Statics */ public static function makeArray(Field $field, Asset $asset) { return $field->getOptions() // filter out any FieldOptions that are accidentally null ->filter() ->map(fn($option) => $option->toArray($asset)) ->filter(fn($result) => $result['value'] != null); } public static function makeString(Field $option) { return implode('|', $option->getOptions()); } public static function fromString(string $theString) { $field = new Field(); $field->options = collect(explode('|', $theString)) ->filter(fn($optionString) => !empty($optionString)) ->map(fn($optionString) => FieldOption::fromString($optionString)); return $field; } }