This library is inspired by the code of Johannes Schmitt and the writing of Igor Wiedler. It is intended to reduce the code required for null-checking. Part of TypedPHP.
<?php
require("vendor/autoload.php");
use TypedPHP\Optional\Optional;
class Foo
{
    public function hello()
    {
        return new Bar();
    }
}
class Bar
{
    public function world()
    {
        return "hello world";
    }
}
$optional = new Optional(new Foo());
$optional->hello()->world()->value(); // "hello world"<?php
require("vendor/autoload.php");
use TypedPHP\Optional\None;
$none = new None();
$none->hello()->world()->value(); // null<?php
require("vendor/autoload.php");
use TypedPHP\Optional\None;
$none = new None();
$none
    ->none(function() { print "none"; }); // "none" printed
    ->value(function($value) { print $value; }); // $value not printed
use TypedPHP\Optional\Optional;
$optional = new Optional("hello world");
$optional
    ->none(function() { print "none"; }); // "none" not printed
    ->value(function($value) { print $value; }); // "hello world" printedOnce an Optional method call returns an empty value, it is transformed into a None.
❯ composer require "typedphp/optional:*"❯ composer create-project "typedphp/optional:*" .
❯ vendor/bin/phpunit