v1.0 2017-08-05 10:31 UTC

This package is not auto-updated.

Last update: 2024-09-28 01:25:33 UTC


README

Build Status

本库基于Scott Wlaschin在[https://fsharpforfunandprofit.com/posts/recipe-part2/](https://fsharpforfunandprofit.com/posts/recipe-part2/)上的一篇帖子,旨在将面向铁路的编程引入PHP。

安装

使用Composer进行安装

composer require martinezdelariva/railway 

动机

通常每个用例都会收到一个请求并生成一个响应。用例通过几个步骤,直到得到最终要返回的响应。处理每个错误场景可能会很繁琐且难以阅读。

或者

为了有一个适用于任何工作流程的类型,我们从函数式编程中借用类型Either

Either

此对象充当一个开关,其中表示失败,而表示成功。

铁路命名约定

铁路有用于将火车引向不同轨道的开关(在英国称为“道岔”)。我们可以将这些“成功/失败”函数视为铁路开关。

  • 一条轨道的函数:它有1个输入和1个输出。

One track

  • 两条轨道的函数:它有2个输入(Either)和2个输出(Either)。

Two track

  • 开关:它有1个输入和2个输出(《Either》)。

Switch

函数

以下列出的是连接开关的函数列表

Map

1-1 : 2-2

将一条轨道函数转换为两条轨道函数。

Map

Lift

将一条轨道函数转换为开关。

1-1 : 1-2

Lift

Bind

将开关转换为两条轨道函数。

1-2 : 2-2

Bind

Unite

将两个开关连接到另一个开关。

1-2 和 1-2 : 1-2

Unite

Tee

将死函数转换为一条轨道函数。

Tee

TryCatch

处理异常。将一条轨道函数转换为开关。

1-1 : 1-2

Try Catch

Plus

并行组合开关函数。

1-2 + 1-2 : 1-2

Plus

DoubleMap

处理两条轨道,将一条轨道转换为两条轨道函数。

1-1 : 2-2

Double Map