dsheiko/extras

PHP类型抽象和操作的链式高阶函数集合

v1.0.3 2018-04-30 14:08 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:31:34 UTC


README

Latest Stable Version Total Downloads License Build Status

PHP类型的抽象和操作的链式高阶函数集合。该库扩展了PHP类型,增加了JavaScript和Underscore.js方法

该包的名称来自Array Extras,指的是ES5(JavaScript)中添加的数组方法,用于抽象通用的数组操作逻辑

安装

作为Composer依赖项要求

composer require "dsheiko/extras"

亮点

  • 修复PHP
    • 命名约定:所有方法都是camelCase风格,与PHP内置函数的lower_case风格相反
    • 一致的参数顺序(Chain::chain($target)->method(...$options)<Type>::method($target, ...$options)
    • 方法是可以链式的
    • 数据结构PlainObject类似于JavaScript普通对象
    • 操作目标(值)可以是引用,也可以是类型字面量
  • 熟悉的语法:JavaScript方法,以及Underscore.js/Lodash的方法
  • 性能:包依赖于PHP原生方法;没有内置特定函数可以使用的地方就没有foreach

集合

下载

Dsheiko\Extras 快速参考

概述

Overview

示例

非引用目标

<?php
use \Dsheiko\Extras\Arrays;

function numToArray(int $num): array
{
  return [$num];
}
$res = Arrays::map(range(1,3), "numToArray"); // [[1],[2],[3]]

链式方法

<?php
use \Dsheiko\Extras\Any;

$res = Any::chain(new \ArrayObject([1,2,3]))
    ->toArray() // value is [1,2,3]
    ->map(function($num){ return [ "num" => $num ]; })
    // value is [[ "num" => 1, ..]]
    ->reduce(function($carry, $arr){
        $carry .= $arr["num"];
        return $carry;

    }, "") // value is "123"
    ->replace("/2/", "") // value is "13"
    ->then(function($value){
      if (empty($value)) {
        throw new \Exception("Empty value");
      }
      return $value;
    })
    ->value();
echo $res; // "13"

直接访问方法

<?php
use \Dsheiko\Extras\Arrays;

class Foo
{
    public $bar = "BAR";
}

$arr = Arrays::from(new Foo); // ["bar" => "BAR"]

普通对象

<?php
use \Dsheiko\Extras\Arrays;

$po = Arrays::object(["foo" => "FOO", "bar" => ["baz" => "BAZ"]]);
echo $po->foo; // FOO
echo $po->bar->baz; // BAZ
var_dump($po->bar->entries()); // [["baz", "BAZ"]]