plasmaconduit/either 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

plasmaconduit/either

最新稳定版本:0.2.2

Composer 安装命令:

composer require plasmaconduit/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();

}

统计信息

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

GitHub 信息

  • Stars: 9
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2013-01-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固