aharisu / option
PHP Option object like a Rust language
1.3.0
2023-07-15 03:08 UTC
Requires
- php: ^7.0|^8.0
Requires (Dev)
- phpstan/phpstan: *
- phpstan/phpstan-strict-rules: *
- phpunit/phpunit: ^6.0|^7.0|^8.0|^9.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-11-15 05:57:05 UTC
README
Version information
It will work with both PHP 7.x and PHP 8.x.
Tested with the following PHP versions
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4
- 8.0
- 8.1
- 8.2
Installation
composer require aharisu/option
Usage
// make some object $some = some(1); // make none object $none = none(); if ($some->isSome()) { $v = $some->unwrap(); } if ($none->isNone()) { //do something } if (null != $v = $some->tryUnwrap()) { //do something print_r($v); } $some->someThen(function ($v) { //do something print_r($v); }); $v2 = $none->unwrapOr(2); $k = 10; $v3 = $none->unwrapOrElse(fn () => 2 * $k); // true if (some(1)->equals(1)) { } if (some(1)->equals(some(1))) { } // false if (none()->equals(null)) { } // false and type mismatch warning if (some(1)->equals(1.0)) { } // false and type mismatch warning if (some(1)->equals('1')) { }
Using class property
use aharisu\Option; class ValueType { /** * @param Option<string> $text * @param Option<int> $value */ public function __construct( public readonly int $id, public readonly Option $text, public readonly Option $value, ) { } } new ValueType( 1, toOption('text'), //some toOption(null), //none );
License
Apache 2.0 & MIT