aphonix/result
Composer 安装命令:
composer require aphonix/result
包简介
A zero-dependency, production-ready PHP implementation of Rust's Result type for elegant error handling.
README 文档
README
A zero-dependency, production-ready PHP implementation of Rust's Result type. It brings elegant error handling and functional programming patterns to PHP 7.1+, eliminating the need for nested try-catch blocks and implicit exceptions.
🌟 Features
- Rust-compliant API: Method names and logic are 1:1 aligned with
std::result::Result. - No
newKeyword: Functional constructorsOk()andErr()for a cleaner syntax. - Type Safe: Encourages explicit error handling.
- Chainable: Supports monadic operations like
map,and_then, andor_else. - PSR-12 Compliant: Fully follows PHP coding standards.
🚀 Installation
Install the package via Composer:
composer require aphonix/result
🛠 Usage
Basic Example
Instead of throwing exceptions that break the control flow, return a Result:
use function Ok; use function Err; function divide(float $numerator, float $denominator): \Aphonix\Result\Result { if ($denominator === 0.0) { return Err("Division by zero"); } return Ok($numerator / $denominator); } $result = divide(10, 2); if ($result->is_ok()) { echo "Success: " . $result->unwrap(); // 5 } else { echo "Error: " . $result->unwrap_err(); }
Chaining Operations (The Rust Way)
Chain multiple fallible operations gracefully using and_then (monadic bind):
$final_value = fetch_user_data($id) // Returns Result ->and_then('validate_user') // Returns Result ->map(function($user) { // Transform value return $user->getName(); }) ->unwrap_or("Guest"); // Default value if any step failed
📖 API Reference
Variant Checks
is_ok(): Returnstrueif the result isOk.is_err(): Returnstrueif the result isErr.
Value Extraction
unwrap(): Returns the value or throws aRuntimeException(Panic).unwrap_err(): Returns the error or throws aRuntimeException.expect(string $msg): Returns the value or throws with a custom message.unwrap_or($default): Returns the value or the provided default.unwrap_or_else(callable $op): Returns the value or computes a default from a closure.
Transformation & Chaining
map(callable $op): Transforms theOkvalue.map_err(callable $op): Transforms theErrvalue.and_then(callable $op): Chains another operation that returns aResult.or_else(callable $op): Recovers from an error by returning a newResult.
🧪 Testing
The library is fully covered with unit tests. You can run them using PHPUnit:
./vendor/bin/phpunit tests
📜 License
The MIT License (MIT). Please see License File for more information.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
aphonix/result 适用场景与选型建议
aphonix/result 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 198 次下载、GitHub Stars 达 1, 最近一次更新时间为 2026 年 01 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「functional」 「option」 「monad」 「error-handling」 「safe」 「result」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 aphonix/result 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 aphonix/result 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 aphonix/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
Connection 'Db' codeception module to 'Yii2' module database settings
Console Configuration Helper implementation.
Functional library for php with proper currying
A collection of functional programming data structures
统计信息
- 总下载量: 198
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-07