nxu/typed-collection

此包已被废弃且不再维护。未建议替代包。

Laravel 集合,支持严格类型。

v2 2022-05-02 08:27 UTC

This package is auto-updated.

Last update: 2023-09-16 18:09:07 UTC


README

老实说,现在就使用PHPStan吧。

Stand With Ukraine

Packagist StyleCI

类型化集合

虽然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许可授权。