chrisharrison/php-array-of 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

chrisharrison/php-array-of

最新稳定版本:1.1

Composer 安装命令:

composer require chrisharrison/php-array-of

包简介

Implement an array of a defined type. Generics replacement for PHP.

README 文档

README

Build Status

Implement an array of a defined type. Generics replacement for PHP.

Requirements

Requires PHP >= 7.1

Installation

Through Composer, obviously:

composer require chrisharrison/php-array-of

Why?

PHP 7 has pretty good support for type declarations, both in arguments and returns. It now also handles primitives as well as class names. For example:

public function dealCard(string $cardName): Card;

One thing is still lacking. Array generics. There's an RFC for implementing 'Array Of'. It's been around for quite a while and was roundly rejected.

This library is a workaround for that. It allows you to make type declarations for arrays of a particular type.

Usage

Using an existing implementation

The library comes with ArrayOf implementations for all of the PHP scalar types. i.e.:

  • ArrayOfInteger
  • ArrayOfFloat
  • ArrayOfString
  • ArrayOfBoolean

These can then be used in a type declaration:

public function getIntegers(): ArrayOfInteger;

An ArrayOfInteger can be created:

$integers = new ArrayOfInteger([1,1,2,3,5,8,13]);

and used like an array:

$sum = $integers[5] + $integers[6]; // equals 21

Implementing your own type

You can create your own ArrayOfs for your own types.

final class ArrayOfCard extends ArrayOf
{
    protected function typeToEnforce(): string
    {
        return Card::class;
    }
}

An ArrayOfCard can be created thus:

$aceOfSpades = new Card('spades', 'ace');
$threeOfClubs = new Card('clubs', '3');

$cards = new ArrayOfCard([$aceOfSpades, $threeOfClubs]);

Other concerns

Enforcement

Members of an ArrayOf are enforced as being of the type specified in the typeToEnforce abstract method. This enforcement occurs on instantiation at runtime. If you try to instantiate with a member of a non-matching type, an exception will be thrown.

Permissible types

Only PHP scalars and objects can be members of an ArrayOf. So no callables and no arrays.

Immutability

ArrayOfs are mutable. This library provides the capability to define immutable objects in the form of ImmutableArrayOfs. These objects extend from ArrayOf and work in the same way except after the initial instantiation, no further changes can be made to the object. If you try to perform a write operation (e.g. unset) on it, an exception will be thrown. All of the scalar types are also provided in immutable form:

  • ImmutableArrayOfInteger
  • ImmutableArrayOfFloat
  • ImmutableArrayOfString
  • ImmutableArrayOfBoolean

统计信息

  • 总下载量: 665.14k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 3
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 10
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固