sysvyz / hurl
PHP7 语言包装器
1.0.0-alpha.0.4
2016-07-17 22:33 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: 5.3.*
- symfony/filesystem: ^3.1
This package is not auto-updated.
Last update: 2024-09-26 01:23:04 UTC
README
Hurl 是一个数据转换框架,旨在组合复杂的转换。
安装
您需要 composer require sysvyz/hurl
使用方法
Hurl 被设计成将算法作为数据结构构建。每个算法都由一棵树表示。树通过其根节点表示。为了重用,树应该是无状态的(且不可变的)。Node 表示数据转换。
创建节点
节点基本上是对 function 或 Closure 的包装。就像函数一样,节点有输入(参数)和输出。
$fromHex = Node::call(function ($data) { return hexdec($data); }); var_dump($fromHex('a')); //int(10)
内置转换
节点是转换规则。有几个内置的 PHP 函数被包装成节点。
$explode = Node::explode('.'); var_dump($explode('a.b')); //array(2) { // [0]=> // string(1) "a" // [1]=> // string(1) "b" //}
链式转换
节点可以被链接起来以执行多个连续的转换。
$chain = $explode->implode('-'); var_dump($chain('a.b')); //string(3) "a-b"
映射
最常用的转换之一是 array_map。节点提供了一个方便的方式来执行这些操作。由于 array_map 的 callback 函数实际上就是一个转换,所以显然可以使用节点作为回调。
$map = $explode->map($fromHex)->implode('.'); var_dump($map('a.b')); //string(5) "10.11"
排序
$sort = Node::ARRAY()->sort(function ($a,$b){ return $a-$b; }); var_dump($sort([2,5,3,4,1])); //array(5) { // [0]=> // int(1) // [1]=> // int(2) // [2]=> // int(3) // [3]=> // int(4) // [4]=> // int(5) //}