dxw / php-missing
PHP希望拥有的stdlib
Requires
- php: ^7.4||^8.1
- dxw/result: ^1.0
Requires (Dev)
- dxw/php-cs-fixer-config: ^2.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^5.1
This package is auto-updated.
Last update: 2024-09-19 16:08:24 UTC
README
PHP的标准库包含很多东西,但缺少很多东西。所有这些函数都是我不得不反复实现的基本功能。
安装
安装 composer。
在项目的根目录中运行以下命令
composer require dxw/php-missing
或者,创建一个包含以下内容的 composer.json 文件并运行 "composer install"
{
"require": {
"dxw/php-missing": "^2.0"
}
}
API
- \Missing\Arrays::flatten
- \Missing\Arrays::sortBy
- \Missing\Dates::parse
- \Missing\Dates::strftime
- \Missing\Ints::ordinalize
- \Missing\Reflection::call
- \Missing\Strings::startsWith
- \Missing\Strings::endsWith
- \Missing\Strings::getOutput
数组
$array = \Missing\Arrays::flatten($array)
将包含数组的数组扁平化。
\Missing\Arrays::flatten([1, [2, 3, [4, 5]]]) === [1, 2, 3, 4, 5]
$array = \Missing\Arrays::sortBy($array, $callback)
根据 $callback($array_element) 对 $array 进行排序。
\Missing\Arrays::sortBy(['abc', 'ab', 'a'], function ($a) {return strlen($a);}) === ['a', 'ab', 'abc']
日期
list($timestamp, $err) = \Missing\Dates::parse($str)
解析几个常见/标准的时间格式,返回一个包含UNIX时间戳或错误的 Dxw\Result\Result
对象。
$result = \Missing\Dates::parse(get_post_meta($post->ID, '_EventStartDate', true));
if ($result->isErr()) {
$date = 'Unknown date';
} else {
$date = strftime('%e %B %Y', $result->unwrap());
}
以下日期格式被解析
- %Y-%m-%dT%H:%M:%S
- %Y-%m-%d %H:%M:%S
- %Y-%m-%dT%H:%M
- %Y-%m-%d %H:%M
- %Y-%m-%d
$date = \Missing\Dates::strftime($date_string, $format, $else, $tz)
使用 \Missing\Dates::parse() 解析 $date_string(也接受UTC时间戳),如果解析正确,则返回在时区 $tz 中使用 $format 格式的日期,否则返回 $else。
<p>Date: <?php echo \Missing\Dates::strftime($date, 'd/m/Y', 'unknown', 'Europe/London') ?></p>
整数
$string = \Missing\Ints::ordinalize($number)
返回任何给定整数的英文序数(即1 => "1st",2 => "2nd")。
直接从 active_record 的 Inflector#ordinalize(也是MIT许可)复制。
反射
$value = \Missing\Reflection::call($object, $methodName, $arguments)
使用 $arguments(一个数组)调用 $object 的私有或受保护方法 $methodName,并返回其返回值。
字符串
$bool = \Missing\Strings::startsWith($haystack, $needle)
如果字符串 $haystack 以 $needle 开头,则返回 true(使用 substr() - 不支持正则表达式)。
$bool = \Missing\Strings::endsWith($haystack, $needle)
如果字符串 $haystack 以 $needle 结尾,则返回 true(使用 substr() - 不支持正则表达式)。
$string = \Missing\Strings::getOutput($callback)
执行 $callback,返回其打印的字符串。
许可证
MIT - see COPYING.md
\Missing\Ints::ordinal 和 \Missing\Ints::ordinalize 从 Rails active_support 模块移植而来,也是MIT许可。