Skip to content

Provides an Option type implementation for PHP

License

Notifications You must be signed in to change notification settings

ghostwriter/option

Repository files navigation

Option

Automation Supported PHP Version Mutation Coverage Code Coverage Type Coverage Latest Version on Packagist Downloads

Provides an Option type implementation for PHP.

Installation

You can install the package via composer:

composer require ghostwriter/option

Star ⭐️ this repo if you find it useful

You can also star (🌟) this repo to find it easier later.

Usage

use Ghostwriter\Option\Exception\NullPointerException;
use Ghostwriter\Option\None;
use Ghostwriter\Option\Some;

$greeting = Some::new('Hello World!');
echo $greeting->unwrap();        // 'Hello World!'


$name = None::new();
echo $name->unwrap();                  // throw `NullPointerException`
echo $name->unwrapOr('Default Value'); // 'Default Value'

None::new();            // return `None`
Some::nullable(null);   // return `None`
Some::new(null);        // throw `NullPointerException`

--- Example

function divide(int $x, int $y): OptionInterface
{
    if ($y === 0) {
        return None::new();
    }

    return Some::new($x / $y);
}

divide(1, 0); // None
divide(1, 1); // Some(1)

Testing

composer test

Credits

Changelog

Please see CHANGELOG.md for more information on what has changed recently.

License

Please see LICENSE for more information on the license that applies to this project.

Security

Please see SECURITY.md for more information on security disclosure process.