trehinos / thor-option
适用于 PHP 8.1 及以上版本的选项类型。
v1.0.2
2024-02-27 08:53 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^11
This package is auto-updated.
Last update: 2024-09-28 13:35:37 UTC
README
此软件包允许您在 PHP 中使用选项类型(Thor\Maybe\Option
)来处理值可能或可能不存在的情况。
此模块的 API 严重受到 Rust 的 Option 类型 的启发。
告别 null
值
使用 Thor\Maybe\Option
,您可以将任何值(包括 null
)包裹起来,而永远不会得到一个 null
。
示例
玩转一些数据
use Thor\Maybe\Option; use Thor\Maybe\Maybe; $myOption = Option::from("data..."); // Or $myOption = Option::some("data..."); if ($myOption->isNone()) { // Never } // Or if ($myOption->isA(Maybe::NONE)) { // Never } // Unwrap the optional value if ($myOption->is() === Maybe::SOME) { // Here we know we can unwrap(). $myString = $myOption->unwrap(); } // Echoes the string if it is not none, or an empty string if it is : echo $myOption->matches( fn(string $str) => $str, fn() => '', ); // Or echo $myOption->unwrapOr('');
处理 NONE
值
use Thor\Maybe\Option; $myOption = Option::from(null); $myOption = Option::none(); $value = $myOption->unwrap(); // Throws a RuntimeException $value = $myOption->unwrapOrThrow(new Exception("Custom Exception")); $value = $myOption->unwrapOrElse(fn() => 'default value from callable'); $value = $myOption->unwrapOr('default value');
参考
Maybe 枚举
- Case
SOME
表示选项包含某个值的情况, - Case
NONE
表示选项中没有值。
Option
构造函数
Option::from(mixed $value)
: 如果$value
为 null,则创建一个没有值的选项,否则创建一个包含一些值的选项,Option::some(mixed $value)
: 创建一个包含一些值的选项,Option::none()
: 创建一个没有值的选项。
信息方法
$myOption->is()
: 返回Maybe::SOME
或Maybe::NONE
,$myOption->isNone()
: 如果选项没有值则返回true
,$myOption->isSome()
: 如果选项有值则返回true
,$myOption->isA(Maybe $maybe)
: 如果选项对应于 $maybe 情况则返回true
。
匹配
如果 Option 包含值,则执行一些操作,如果值不存在,则执行其他操作。
use Thor\Maybe\Option; use Thor\Maybe\Maybe; $myOption = Option::some("data..."); $myOption->matches( fn(string $str) => "My Option is Some($str)", fn() => 'My Option is None...', );
解包方法
$value = $myOption->unwrap()
: 如果选项的值不存在,则抛出 RuntimeException,$value = $myOption->unwrapOrThrow(new Exception("自定义异常"))
: 如果选项的值不存在,则抛出指定的Throwable
,$value = $myOption->unwrapOrElse(fn() => '从可调用参数返回的默认值')
: 如果选项的值不存在,则执行参数中的可调用函数并返回其返回值,$value = $myOption->unwrapOr('默认值')
: 如果选项的值不存在,则返回指定的值。
许可证
版权所有 2024 Sébastien GELDREICH
许可证 MIT