dsheiko / extras
PHP类型抽象和操作的链式高阶函数集合
v1.0.3
2018-04-30 14:08 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- apigen/apigen: dev-master
- peridot-php/leo: ^1.6
- peridot-php/peridot: ^1.19
- peridot-php/peridot-code-coverage-reporters: ^3.0
- roave/better-reflection: dev-master#c87d856
- squizlabs/php_codesniffer: ^3.1
This package is not auto-updated.
Last update: 2024-09-15 04:31:34 UTC
README
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
集合
下载
概述
示例
非引用目标
<?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"]]