for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Bdf\Collection\Util;
use Bdf\Collection\Stream\EmptyStream;
use Bdf\Collection\Stream\StreamInterface;
use RuntimeException;
/**
* Optional without value
*
* @internal
*/
final class EmptyOptional implements OptionalInterface
{
* @var EmptyOptional|null
private static $instance;
private function __construct()
}
* {@inheritdoc}
public function filter(callable $predicate): OptionalInterface
return $this;
public function map(callable $transformer): OptionalInterface
public function apply(callable $consumer): void
public function or($value)
return $value;
public function orSupply(callable $supplier)
return $supplier();
public function orThrows($exception = RuntimeException::class)
if (is_string($exception)) {
$exception = new $exception;
throw $exception;
public function present(): bool
return false;
public function get()
return null;
public function __call(string $name, array $arguments): OptionalInterface
public function __get(string $name): OptionalInterface
public function __isset(string $name): bool
public function __set(string $name, $value): void
public function stream(): StreamInterface
return EmptyStream::instance();
* Get the EmptyOptional instance
* @return EmptyOptional
public static function instance(): EmptyOptional
if (self::$instance) {
return self::$instance;
return self::$instance = new EmptyOptional();