hopr/result
Composer 安装命令:
composer require hopr/result
包简介
Result type for PHP, as I like it do be.
README 文档
README
A PHP Result type drawing from Gleam, delivering essential functionality in a concise, efficient package.
Provides fundamental outcome handling with minimal overhead.
I just wanted a Result library with an API I find natural.
🚀 Key features
✅ Fluent workflow with nice API
$result = ok(5) ->map(fn($x) => $x * 2) // Ok(10) ->map(fn($x) => $x + 1); // Ok(11)
🧩 use Gleam keyword for PHP
Elegant destructuring and dependency injection:
$cat_result = ok(['name' => 'Luna', 'age' => 7]) // Bind `name` to the returned value of the callable ->use('name', fn($data) => isset($data['name']) ? ok($data['name']) : err('Missing name')) // Bind `age` to the returned value of the callable. `name` is accessible here. ->use('age', fn($data, $name) => isset($data['age']) ? ok($data['age']) : err('Missing age')) // And mapWith the previous `use` extracted fields! ->mapWith(fn($data, $name, $age) => new Cat(name: $name, age: $age));
⚡️ Zero-dependency
Pure PHP with no external runtime dependencies. Lightweight, easy to read, easy to debug.
📦 Installation
composer require hopr/result
Usage
See examples/ for more examples.
Create results
use function Hopr\Result\{ok, err}; // You can also use Ok::of(42); $success = ok(42); // You can also use Error::of("..."); $failure = err("something went wrong");
Chain transformations
$result = ok(5) ->map(fn($x) => $x * 2) // Ok(10) ->map(fn($x) => $x + 1); // Ok(11)
Graceful error handling
$result = err("bad input") ->map(fn($x) => $x * 2) // Still err("bad input") ->mapErr(fn($e) => "Error: $e"); // err("Error: bad input")
Safe unwrapping
if ($result->isOk()) { $value = $result->unwrap(); // ✅ safe } else { $value = $result->unwrapOr(0); // fallback value }
Monadic binding
$parseNumber = function(string $input) { return is_numeric($input) ? ok((int)$input) : err("Not a number"); }; $result = ok("42")->bind($parseNumber); // Ok(42)
For more examples, check the interface documentation in src/Result.php.
The Hopr project
A set of PHP components exploring novel features and alternative design patterns that could enrich the language's standard library.
hopr/result 适用场景与选型建议
hopr/result 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 176 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 04 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「results」 「monad」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hopr/result 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hopr/result 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hopr/result 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Option type (Some/None) replacing nullable types with explicit presence semantics
Result type capturing success or failure as a value for controlled error handling
A collection of functional programming data structures
Generate Alfred 3 or 4 Workflow Results in PHP with a laugh.
Extension providing tools to export results.
A presentable result printer for PHPUnit
统计信息
- 总下载量: 176
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-16