edumarques/typed-collections

类型集合是类型列表的一种实现。

v2.0.0 2024-01-14 22:22 UTC

This package is auto-updated.

Last update: 2024-09-15 00:05:15 UTC


README

Packagist Dependency Version GitHub edumarques codecov

描述

类型集合是类型列表的一种实现。集合允许我们拥有预定类型及其子类型的可遍历列表。它的行为阻止了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

对抽象类和接口的支持

集合和字典将检查继承,因此如果您需要一个基类,可以安全地添加派生类。

贡献

欢迎贡献者!有关如何贡献的更多信息,请阅读我们的贡献指南