extalion/php-strict-array

通用数组(向量、映射)生成器

0.1.0 2019-12-18 21:41 UTC

This package is auto-updated.

Last update: 2024-09-13 02:38:43 UTC


README

根据这篇文章 创建Php7中的严格类型数组和集合,php-strict-array 应运而生。

关于PHP中的泛型有一些讨论,但谁知道它何时会到来。

它并不完全像你从 JavaC++ 中了解的泛型,泛型看起来像 array<bool>()array<string, \Foo\User>()

这里的严格数组看起来像 array_int_array_bool_array_string_and_float_,所以我希望当它们成为原生PHP的一部分时,你所需做的只是

  1. 将所有 new array_Usernew array_string_and_array_object__ 替换为 array<User>array<string, array<object>>

现在你不需要在你的包内验证用户提供的数组

function foo(array $users)
{
    foreach ($users as $user) {
        if (!$user instanceof User) {
            thorw new \InvalidArgumentException();
        }
    }

    ...
}

你的代码可以变得更加简单

function foo(array_User_ $users)
{
    ...
}

安装

composer require eXtalion/php-strict-array

基本严格数组

一些基本数组已生成

  • array_array_,
  • array_bool_,
  • array_callable_,
  • array_float_,
  • array_int_,
  • array_iterable_,
  • array_object_,
  • array_string_,
  • array_string_and_array_,
  • array_string_and_bool_,
  • array_string_and_callable_,
  • array_string_and_float_,
  • array_string_and_int_,
  • array_string_and_iterable_,
  • array_string_and_object_,
  • array_string_and_string_.

创建新的严格数组

运行

vendor/bin/php-sa [path/to/arrays-dir]

并回答几个问题。如果没有 path/to/arrays-dir,代码将显示到STDOUT。

这是一个“普通”数组

有一些数组函数可以与严格数组一起使用

  • sarray_filter,
  • sarray_key_exists,
  • sarray_keys,
  • sarray_search,
  • sarray_values.