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" printed
Once 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