nxu / typed-collection
此包已被废弃且不再维护。未建议替代包。
Laravel 集合,支持严格类型。
v2
2022-05-02 08:27 UTC
Requires
- php: >=8.0.2
- illuminate/support: >=9
Requires (Dev)
- phpunit/phpunit: ^9.0
README
老实说,现在就使用PHPStan吧。
类型化集合
虽然PHP 7为使用类型提供了很好的特性,但仍有许多东西缺失。我最怀念的是泛型或简单地说,为具有特定类型的元素数组合并类型提示的能力。此包的目的是提供一种替代的类型提示数组的方法。
如何使用?
此包基于Laravel的集合并需要 illuminate/support。因此,虽然不是严格绑定到Laravel,但它的目的是与Laravel 5框架一起使用。
它通过为每个类型创建集合类并指定元素类型来实现。这将得到强制执行,您可以确保集合只包含具有指定类型的元素。
安装
使用composer
安装包。
composer require nxu/typed-collection
不使用composer?太遗憾了。
内置集合
该包为PHP的所有标量类型(当然不包括null
)提供了内置集合。
ArrayCollection
BooleanCollection
CallableCollection
FloatCollection
IntegerCollection
ResourceCollection
StringCollection
此外,还有一个DateTimeInterfaceCollection
可供使用。
自定义集合类
对于任何其他类型,创建一个类并扩展TypedCollection
。然后只需将protected $objectType
属性设置为要使用的类型的完全限定名(FQN)
protected $objectType = \DateTime::class;
就这样,添加任何其他类型都会抛出InvalidTypeException
。
更多定制
如果您希望进一步定制集合,可以重写isTypeValid($value): bool
方法并添加任何验证规则。
助手
类似于Laravel的collect()
方法,此包提供了易于使用的助手方法
collect_array()
collect_bool()
- ...
许可
此包是开源软件,根据MIT许可授权。