定制 mareg/either 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mareg/either

最新稳定版本:0.2.4

Composer 安装命令:

composer require mareg/either

包简介

README 文档

README

Build Status

A strongly typed composable alternative to exceptions and functions that return error codes or sane values.

The convention is that Left is representative of an error value and Right is representative of a success value.

<?php
use PlasmaConduit\either\Left;
use PlasmaConduit\either\Right;
use PlasmaConduit\option\Some;
use PlasmaConduit\option\None;

function loadNews() {
    $connection = PsuedoDB::connect();
    if (!$connection) {
        return new Left("Failed connection to DB");
    }

    $news = $connection->get("latestNews");
    if ($news) {
        return new Right($news);
    } else {
        return new Left("Failed reading latest news");
    }
}

$news = loadNews()->fold(
    function($failMessage) {
        PsudeoLogger::log($failMessage);
        return new None();
    },
    function($news) {
        return new Some($news);
    }
)->getOrElse("No news at the moment, please check back later.");

Documentation

This library implements a classes Left and Right and they both implement the Either interface. The Either interface is as follows:

<?php
namespace PlasmaConduit\either;

interface Either {

    /**
     * Returns true if this `Either` type is `Left`, false otherwise
     *
     * @return {Boolean}
     */
    public function isLeft();

    /**
     * Returns true if this `Either` type is `Right`, false otherwise
     *
     * @return {Boolean}
     */
    public function isRight();

    /**
     * This function takes two callable types as it's arguments and it will
     * only call one of them. If this `Either` type is `Left` it calls
     * `$leftCase` with the left value. If this is the `Right` type it calls
     * the `$rightCase` with the right value.
     *
     * @param {callable} $leftCase  - Callable for left case
     * @param {callable} $rightCase - Callable for right case
     * @return {Any}                - Whatever the ran case returns
     */
    public function fold($leftCase, $rightCase);

    /**
     * Returns an `Option` projection of the `Left` value of this `Either` type.
     * So if this is type `Left` it returns `Some($value)` but if this is
     * `Right` it returns `None`
     *
     * @return {PlasmaConduit\option\Option}
     */
    public function left();

    /**
     * Returns an `Option` projection of the `Right` value of this `Either`
     * type. So if this is type `Right` it returns `Some($value)` but if this is
     * `Left` it returns `None`
     *
     * @return {PlasmaConduit\option\Option}
     */
    public function right();

    /**
     * Returns the `Either` type as the opposite side. `Left` returns `Right`
     * and vice versa.
     *
     * @return {Either}
     */
    public function swap();

}

统计信息

  • 总下载量: 15k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2017-03-01