*/ final class Some extends Option { /** @var T */ private $value; /** * @param T $value */ public function __construct($value) { $this->value = $value; } /** * @template U * * @param U $value * * @return Some */ public static function create($value): self { return new self($value); } public function isDefined(): bool { return true; } public function isEmpty(): bool { return false; } public function get() { return $this->value; } public function getOrElse($default) { return $this->value; } public function getOrCall($callable) { return $this->value; } public function getOrThrow(\Exception $ex) { return $this->value; } public function orElse(Option $else) { return $this; } public function ifDefined($callable) { $this->forAll($callable); } public function forAll($callable) { $callable($this->value); return $this; } public function map($callable) { return new self($callable($this->value)); } public function flatMap($callable) { /** @var mixed */ $rs = $callable($this->value); if (!$rs instanceof Option) { throw new \RuntimeException('Callables passed to flatMap() must return an Option. Maybe you should use map() instead?'); } return $rs; } public function filter($callable) { if (true === $callable($this->value)) { return $this; } return None::create(); } public function filterNot($callable) { if (false === $callable($this->value)) { return $this; } return None::create(); } public function select($value) { if ($this->value === $value) { return $this; } return None::create(); } public function reject($value) { if ($this->value === $value) { return None::create(); } return $this; } /** * @return ArrayIterator */ public function getIterator(): ArrayIterator { return new ArrayIterator([$this->value]); } public function foldLeft($initialValue, $callable) { return $callable($initialValue, $this->value); } public function foldRight($initialValue, $callable) { return $callable($this->value, $initialValue); } } __halt_compiler();----SIGNATURE:----gZ4wUJsmGDgkd0uz+FvebxZalzbYQQmRM2AYtLOo+wu7lGa6Su+HqSS9a4bhkiyQJm+tFhVv3Rqa44QEUxiRqAWxbhZEE4P2XsWjhtGA5zrm0p44EuNbyJ161rB7qjpspcJ4wzLTAKilbDl+QKIoGuaXh1o9gq2lBB+EzMJ9Kx5TP4ODVqZCLeJ2GjX6CDiJh4J+qCu9ic95DvntoCgzZynXEkbqKbauWCYQ6+rvYak7j4u3imqahz/5IPlYE05UZIYF4IAe+G3q4sgVqju1lgDnHTHxXET0BAEQN37Q12aNi9L7ymGW25KJvWd0OwjZ6SZhwQlyVSpwm3SGh6a5dIU2IHN6skIW4AfH4piEAyZ2m6Ov16s4VYuJzNPiyPBUI+Lf4UrzlB7XG6JI2qTSBaR5snzVtbWY3cmBU9K8k/mawVM9sy4r+8oFjdOQwLyactX+3SC5wPSxQ1nq6n8hrNJFkHQ5JeHAw/wvA1R6ogoqFQ3jUUyqqUk4NAKifYVCVgX+3MZJqoHl1XuEwwsplXs7jlB5925VkBP270Ro4ml/PHWAU5g3KqUdw8tvPCTMXW/JCZ3CIs+OzUivRkQAq3NkaZNpraiAOvDdtM8lLAw5ZMkMutceMLGdw/m1GRDF9e6XAwrcHdV48JUozcBWisahknpLu872GCf1QfDPjvE=----ATTACHMENT:----ODQwNjEyNTg3Mjc5Nzc4OSAzNzYwNjE3MTA4NTc4MzQ4IDg4NTc2MTU0MTE1NzY2NzM=