chris-kruining / utilities
此包已被弃用且不再维护。未建议替代包。
适用于PHP 7.1及以上的工具
0.2.32
2022-02-17 10:09 UTC
Requires
- php: >=7.4.0
- composer/composer: 2.2.6
- nesbot/carbon: 2.56.0
- psr/container: ^1 || 2.0.2
Requires (Dev)
- phpspec/phpspec: 7.1.0
Provides
- dev-master
- 0.2.32
- 0.2.31
- 0.2.30
- 0.2.29
- 0.2.28
- 0.2.27
- 0.2.26
- 0.2.25
- 0.2.24
- 0.2.23
- 0.2.22
- 0.2.21
- 0.2.20
- 0.2.19
- 0.2.18
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.1
- dev-renovate/nesbot-carbon-2.x
- dev-renovate/composer-composer-2.x
This package is auto-updated.
Last update: 2023-09-27 18:01:26 UTC
README
工具
一些PHP工具,没有什么特别之处,没有新意,只是符合我的口味
安装
通过composer安装,composer require chris-kruining/utilities
使用
目前库的主要组件是Collection
。Collection
的目标是为数组函数提供一个面向对象的接口。它还具有一些额外的功能,如方法链和linq-esc实现(尚未完成),以便您可以像与数据库表交互一样与Collection
交互
例如
CPB\Utilities\Collections\Collection::from([ 'these', 'are', null, null, 'some', null, 'test', 'values', null ]) ->filter() ->toString(' ');
将产生
'these are some test values'
这与
join(' ', array_filter([ 'these', 'are', null, null, 'some', null, 'test', 'values', null ]));
我同意,纯天然的方法现在更简洁,但真正的优势在于开始添加回调并增加链长度时
CPB\Utilities\Collections\Collection::from([ 'these', '', '', 'are', null, 'some', null, 'test', '', 'values', '' ]) ->filter(fn($v) => $v !== null && strlen($v) > 0) ->map(fn($k, $v) => $k . '::' . $v) ->toString('|');
将产生
'0::these|1::are|2::some|3::test|4::values'
这与
$filtered = array_filter( [ 'these', '', '', 'are', null, 'some', null, 'test', '', 'values', '' ], fn($v) => $v !== null && strlen($v) > 0 ); join('|', array_map(fn($k, $v) => $k . '::' . $v, array_keys($filtered), $filtered));
如您所见,集合版本保持了可读性,而纯天然版本在我的看法中失去了它的魅力,因为为了实现一个单一目标,您需要将它分散在多个变量中
路线图
- 实现
Collection
的基本功能 - 增加
Collection
的功能:P - 将功能拆分到继承树中
- 将延迟模式从
Collection
拆分到LazyCollection
中,并将PHP的数组函数实现为生成器 - 完成继承结构
- 实现
LazyCollection
- (更好的)在新类中实现
Queryable
接口,以便Collection
不会变得臃肿