hxss/array-object

1.8.0 2021-06-30 15:36 UTC

README

PHP 数组的面向对象接口。

该类实现了几乎所有PHP 函数

工作基本原理

  • 所有以 array_ 前缀开头的 PHP 函数现在都是类方法,无前缀,采用驼峰命名法(array_change_key_case -> ArrayObject::changeKeyCase());
  • 在大多数情况下,类方法不需要 array 类型的参数;
  • 所有接受 array 参数的方法现在接受 array|ArrayObject
  • 所有需要返回 array 的方法现在返回 ArrayObject

异常和与 PHP API 的差异

未实现的功能

API 发生变化的功能

  • ArrayObject::combine() - 静态方法;
  • array_fill & array_fill_keys 合并到静态 ArrayObject::fill() 中,其中第二个参数定义行为;
  • ArrayObject::range() - 静态方法;
  • 所有 array_diff* 函数合并到 ArrayObject::diff() 中,其中 userfunc 总共得到 4 个参数(key1, val1, key2, val2);
  • ArrayObject::filter() 总是将 2 个参数传递给 userfunc:键和值;
  • 所有 array_​intersect* 函数合并到 ArrayObject::intersect() 中,其中 userfunc 总共得到 4 个参数(key1, val1, key2, val2);
  • array_​key_​first 实现为 ArrayObject::firstKey()
  • array_​key_​last 实现为 ArrayObject::lastKey()
  • 所有 array_​merge* 函数合并到 ArrayObject::merge() 方法中;
  • ArrayObject::multisort() 仅在传入的 ArrayObject 值中保存排序后的数组。所有 array 类型的参数将按常规用于排序,但不会更新。
  • array_​rand 实现为 ArrayObject::randKeys()
  • array_replace & array_​replace_​recursive 合并到静态 ArrayObject::replace() 中,其中最后一个可选参数 true 表示递归;
  • 所有数组排序函数合并到 ArrayObject::sort() 中,具有 3 个新标志,可以与默认标志结合使用(按位或);
  • array_walk & array_walk_​recursive 合并到静态 ArrayObject::walk() 中,其中最后一个可选参数 true 表示递归;

新功能

  • ArrayObject::recursive() - 递归地将 ArrayObject 中的所有子数组转换为;
  • ArrayObject::items() - 返回原始数组;
  • ArrayObject::append() - 将一个或多个元素追加到数组的末尾。类似于 push,但返回自身;
  • ArrayObject::prepend() - 将一个或多个元素添加到数组的开头。类似于 unshift,但返回自身;
  • ArrayObject::rand() - 返回包含一个或多个随机元素的关联数组;
  • ArrayObject::first() - 返回数组的第一个值;
  • ArrayObject::last() - 返回数组的最后一个值;
  • ArrayObject::eq() - 检查对象是否等于 $other 数组;
  • ArrayObject::touch() - 返回指定偏移处的值或使用 $default 值初始化它;
  • ArrayObject::generator() - 通过用户生成器生成新数组;