martinezdelariva / railway
v1.0
2017-08-05 10:31 UTC
Requires (Dev)
- phpunit/phpunit: ^6.3
This package is not auto-updated.
Last update: 2024-09-28 01:25:33 UTC
README
本库基于Scott Wlaschin在[https://fsharpforfunandprofit.com/posts/recipe-part2/](https://fsharpforfunandprofit.com/posts/recipe-part2/)上的一篇帖子,旨在将面向铁路的编程引入PHP。
安装
使用Composer进行安装
composer require martinezdelariva/railway
动机
通常每个用例都会收到一个请求并生成一个响应。用例通过几个步骤,直到得到最终要返回的响应。处理每个错误场景可能会很繁琐且难以阅读。
或者
为了有一个适用于任何工作流程的类型,我们从函数式编程中借用类型Either
此对象充当一个开关,其中左表示失败,而右表示成功。
铁路命名约定
铁路有用于将火车引向不同轨道的开关(在英国称为“道岔”)。我们可以将这些“成功/失败”函数视为铁路开关。
- 一条轨道的函数:它有1个输入和1个输出。
- 两条轨道的函数:它有2个输入(
Either
)和2个输出(Either
)。
- 开关:它有1个输入和2个输出(《Either》)。
函数
以下列出的是连接开关的函数列表
Map
1-1 : 2-2
将一条轨道函数转换为两条轨道函数。
Lift
将一条轨道函数转换为开关。
1-1 : 1-2
Bind
将开关转换为两条轨道函数。
1-2 : 2-2
Unite
将两个开关连接到另一个开关。
1-2 和 1-2 : 1-2
Tee
将死函数转换为一条轨道函数。
TryCatch
处理异常。将一条轨道函数转换为开关。
1-1 : 1-2
Plus
并行组合开关函数。
1-2 + 1-2 : 1-2
DoubleMap
处理两条轨道,将一条轨道转换为两条轨道函数。
1-1 : 2-2