edumarques / typed-collections
类型集合是类型列表的一种实现。
v2.0.0
2024-01-14 22:22 UTC
Requires
- php: >=8.3
Requires (Dev)
- phpstan/phpstan: 1.10.*
- phpunit/phpunit: 10.5.*
- squizlabs/php_codesniffer: 3.8.*
README
描述
类型集合是类型列表的一种实现。集合允许我们拥有预定类型及其子类型的可遍历列表。它的行为阻止了PHP中数组的不严谨性。
这个库包含四个集合类:可变和不可变列表,以及可变和不可变字典。可变列表/字典在对其进行操作时,其内部数组会被改变。不可变列表/字典在操作时会生成一个新的实例。
安装
composer require edumarques/typed-collections:2.*
基本用法
use EduardoMarques\TypedCollections\TypedCollection; use EduardoMarques\TypedCollections\TypedCollectionImmutable; use EduardoMarques\TypedCollections\Enum\ScalarType; use EduardoMarques\TypedCollections\Enum\NonScalarType; $typedCollection1 = TypedCollection::create(ScalarType::INTEGER); $typedCollection2 = TypedCollection::create(ScalarType::STRING); $typedCollectionImmutable1 = TypedCollectionImmutable::create(NonScalarType::CALLABLE); $typedCollectionImmutable2 = TypedCollectionImmutable::create(\stdClass::class);
use EduardoMarques\TypedCollections\TypedDictionary; use EduardoMarques\TypedCollections\TypedDictionaryImmutable; use EduardoMarques\TypedCollections\Enum\ScalarType; use EduardoMarques\TypedCollections\Enum\NonScalarType; $typedDictionary1 = TypedDictionary::create(ScalarType::INTEGER, ScalarType::STRING); $typedDictionary2 = TypedDictionary::create(ScalarType::STRING, ScalarType::DOUBLE); $typedDictionaryImmutable1 = TypedDictionaryImmutable::create(ScalarType::INTEGER, NonScalarType::CALLABLE); $typedDictionaryImmutable2 = TypedDictionaryImmutable::create(ScalarType::STRING, \stdClass::class);
集合
一个PHP实现的数组列表。它的类型在实例化/构建时指定。该类将执行运行时类型检查以验证正在添加的值是否适当。许多标准数组功能都封装在这个类中。
字典
字典扩展了集合的功能。主要区别在于它们与关联数组一起工作,其中您将键映射到值。
支持类型
ScalarType::INTEGER
ScalarType::STRING
ScalarType::BOOLEAN
ScalarType::DOUBLE
NonScalarType::ARRAY
NonScalarType::CALLABLE
class-string
对抽象类和接口的支持
集合和字典将检查继承,因此如果您需要一个基类,可以安全地添加派生类。
贡献
欢迎贡献者!有关如何贡献的更多信息,请阅读我们的贡献指南。