takemo101/simple-result-type
Composer 安装命令:
composer require takemo101/simple-result-type
包简介
Simple Result Type
README 文档
README
The Simple Result Type simply returns the processing result as an object.
Enjoy!
Example
This is a basic usage example.
use Takemo101\SimpleResultType\ { Resulter, Error, Success, }; use Exception; // Create a Success object with the Success method of the Resulter class. $data = Resulter::success(10) // Create a Result object with a new value by the map method. ->map(fn(int $result) => $result * 2) // Get the success result by the success method. ->success(); var_dump($data); // int(20) // Create an Error object with the error method of the Resulter class. $data = Resulter::error(10) // Create an Error object with a new value by the mapError method. ->mapError(fn(int $result) => $result * 2) // Get the error result by the error method. ->error(); var_dump($data); // int(20) // If you generate an Error with a value that implements Throwable, // an exception will be raised. Resulter::error(new Exception('error')) ->exception(); // You can get the output according to the result by the output method. $data = Resulter::success(10) ->map(fn(int $result) => $result * 2) ->output( success: fn(int $result) => $result * 100, error: fn(int $result) => $result * 1, ); var_dump($data); // int(2000)
This is an example of using to determine whether the result is success or error.
use Takemo101\SimpleResultType\ { Error, Success, }; // You can also create objects from the Error and Success classes. $result = Error::create('error'); var_dump($result->isError()); // bool(true) var_dump($result->isSuccess()); // bool(false) $result = Success::create('success'); // You can also judge by Type enum. $data = match ($result->type()) { Type::Success => $result->success(), Type::Error => $result->error(), }; var_dump($data); // string(7) "success"
Try operations that may fail and produce results.
use Takemo101\SimpleResultType\Resulter; use Takemo101\SimpleResultType\Support\ { CatchType, NotCatchType, }; use Exception; use LogicException; use RuntimeException; use InvalidArgumentException; // If an exception occurs, the result will be returned as Error. $result = Resulter::try(function() { throw new Exception('error'); }); // Error<Exception> // By returning the success value, the result will be returned as Success. $result = Resulter::try(function() { return 10; }); // Success<integer> // No error is output except for the exception specified in the CatchType Attribute class. $result = Resulter::try( #[CatchType( RuntimeException::class, InvalidArgumentException::class, )] function() { throw new RuntimeException('error'); } ); // Error<RuntimeException> var_dump($result->isError()); // bool(true) // No error is output for the exception specified in the NotCatchType Attribute class. Resulter::try( #[NotCatchType( RuntimeException::class, InvalidArgumentException::class, )] function() { throw new RuntimeException('error'); } ); // Exception occurs.
Exception handling by ErrorHandler class.
use Takemo101\SimpleResultType\Resulter; use Takemo101\SimpleResultType\Support\ErrorHandler; use LogicException; use RuntimeException; // If an exception occurs, the Error wrapped in the ErrorHandler class is returned. $result = Resulter::trial(function() { throw new RuntimeException('error'); }); // Error<ErrorHandler> // ErrorHandler can be used for processing according to the type of exception $data = $result->error() ->catch(fn (RuntimeException $e) => $e->getMessage()) ->catch(fn (LogicException $e) => $e->getMessage()) ->exception(); // or ->call(); var_dump($data); // string(5) "error"
takemo101/simple-result-type 适用场景与选型建议
takemo101/simple-result-type 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 598 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 03 月 23 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「package」 「php」 「result」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 takemo101/simple-result-type 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 takemo101/simple-result-type 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 takemo101/simple-result-type 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Result type capturing success or failure as a value for controlled error handling
A PHPUnit result printer, variant of the TestDoxCli Printer, that reduces the test failure message size for better readability
Functional handling failures, input errors
Rust like enum Result and Option.
Bundle extension that installs and loads Semantic MediaWiki and associated extensions
统计信息
- 总下载量: 598
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-23