std/lib

非官方标准运行时。标准库的库:最基本的。

0.0.0.1 2019-09-05 10:18 UTC

This package is auto-updated.

Last update: 2024-09-07 19:09:59 UTC


README

std-lib 是一个类型安全的辅助工具集合和几个 PHP "核心" 函数的安全实现。

有关 std/lib 的保证的更多信息,请参阅 stdlib 网站

该库目前正在等待进行非常基本的 QA。它应该在 2019 年 9 月底前普遍可用。

提供的方法

Std\Str 函数

Str 是 UTF-8 准备好的字符串工具的标准名称。

Std\Arr 函数

Arr 是数组工具的标准名称(由于 Array 是保留的)。

\Std\Arr::callRecursive(array $array, callable $method)
\Std\Arr::arrayUniqueRecursive(array $array)
\Std\Arr::keyWalk(array $inputArray, callable $fn)
\Std\Arr::count($array) : array

  计数值或抛出异常。

\Std\Arr::countAny($arrayOrOther): int

  接受任何值,不仅仅是可计数的,对于不可计数的返回零,不抛出异常。

\Std\Arr::getColumn($array)

  与 array_column 相同,但保留键和额外的类型检查。如果子元素中不存在键(列),则抛出 Array\MissingKeyException。如果子元素中存在非数组元素,则抛出 Array\UnexpectedElementException

\Std\Arr::pileByColumn(array $inputArray, string $column) : array`

返回一个新结构化的数组,添加了一个额外的维度,因此输入数组

    [
      ['id' => 'ipsum', 'a' => '1', 'b' => '2', 'c' => 'charlie'],
      ['id' => 'lorem', 'd' => '4', 'e' => '2', 'f' => 'foxtrot'],  // Note these are both id "lorem"
      ['id' => 'lorem', 'g' => '1', 'h' => '2', 'z' => 'zeta'],     // Note these are both id "lorem"
    ]

如果按 "id" 列 "piled",则成为

[
	['ipsum'] => [
		['id' => 'ipsum'', ''a' => '1', 'b' => '2', 'c' => 'charlie']     
	],
	['lorem'] => [
		['id' => 'lorem', ''d' => '4', 'e' => '2', 'f' => 'foxtrot'],
		['id' => 'lorem', ''g' => '1', 'h' => '2', 'z' => 'zeta'],
	]
]
\Std\Arr::rekeyByColumn(array[] $inputArray, string $columnName): array`

  假设 $inputArray 的每个元素都是一个数组,并且在其中有一个键为 $columnName 的子元素,其值为有效键,使用该值重新键数组。
 
  如果这些值的值不唯一,将抛出 LossyOperationException 异常。
  如果任何元素不是数组,将抛出 Array\MissingKeyExceptionArray\UnexpectedElementException

\Std\Arr::rekeyByColumnLossy(array[] $inputArray, string $columnName) : array

  查看 \Std\Arr::rekeyByColumn,但允许转换过程中的损失。

\Std\Arr::columnPopLeft(array[] $inputArray) : array

  从每个子数组元素中弹出 "left" 或 "top"(最前面或最低索引)元素,返回这些值的数组。
  如果任何元素包含零个元素,则在其位置返回 NULL
  如果它是除 array 之外的其他类型,则抛出 Array\UnexpectedElementException

\Std\Arr::columnPopLeft(array[] $inputArray) : array 弹出每个子数组元素中最右边或最底部的元素。

未记录
\Std\Arr::columnRecursive(Iterable $haystack, ...$subKey)
\Std\Arr::columnSearch(Iterable $haystack, $needle)
\Std\Arr::columnSearchRecursive(Iterable $haystack, $needle)
\Std\Arr::combineWith($value, $keyKey, $valueKey, $keyInsensitive = false)
\Std\Arr::idiff($x, $y)

  实际上:array_unique(array_merge(array_intersect($x, $y), array_intersect($y, $x)));

\Std\Arr::keyEach($array, $callback)
\Std\Arr::mapReduce(callable $mapReduceFn, ... $values)
\Std\Arr::merge(array $array1, array $array2 = null, array $_ = null)
\Std\Arr::multisort(array $arr, $arg = null, $arg = null, $_ = null)
\Std\Arr::popLeft(array $array)
\Std\Arr::popRight(array $array)
\Std\Arr::push(array $array, ...$vars)
\Std\Arr::reduce_j(callable $reduceFn, $values)
\Std\Arr::search($needle, array $haystack, $strict = null)
\Std\Arr::shift(array $array)
\Std\Arr::slice(array $array, $offset, $length = null)

  参见:Std\List::slice(array $array, $offset, $length = null)

\Std\Arr::splice(array $input, $offset, $length = null, $replacement = null)
Std\Arr::unshift(array $array, ...$vars)
Std\Arr::walk(array $array, $funcname, $userdata = null)
Std\Arr::walkRecursive(array $input, $funcname, $userdata = null)
Std\Arr::trim($array)

异常

  • Std\ExceptionInterface

    • Std\RuntimeException
    • Std\UnexpectedTypeException - 用于非类型提示方法
    • Std\UnexpectedValueException
    • Std\UnsafeOperationException
    • Std\InformativeExceptionInterface - 提供用户友好的错误消息
  • Std\Array\ExceptionInterface

    • Array\UnexpectedElementException
    • Array\KeyCollisionException

Std\Introspect

内省和内部函数

Introspect::getCallableName($callable)