jasny / php-functions
一组有用的PHP函数
Requires
- php: >=7.1
Requires (Dev)
- jasny/php-code-quality: ^2.2
README
一组本应包含在PHP核心库中的PHP函数。
示例
$found = str_contains($string, 'foo') && array_contains($array, ['all', 'of', 'these']); // VS $found = strpos($string, 'foo') !== false && count(array_intersect($array, ['all', 'of', 'these'])) === 3;
但是等等,还有更多...
如果你喜欢这些函数,你将喜欢改进的PHP库。去看看吧。
安装
composer require jasny\php-functions
用法
所有函数都在Jasny
命名空间中。
use function Jasny\str_contains; // Import functions str_contains('moonrise', 'on'); Jasny\slug('Foo bár'); // or use directly
要将所有函数导入全局命名空间,请在您的应用程序的任何位置要求'require 'global.php'。
require_once 'vendor/jasny/php-functions/global.php';
或者,将其添加到composer.json
的autoload
部分。
"autoload": {
"files": [
"vendor/jasny/php-functions/global.php"
]
}
类型函数
is_associative_array
boolean is_associative_array(mixed $var)
检查变量是否是关联数组。
is_numeric_array
boolean is_numeric_array(mixed $var)
检查变量是否是数字数组。
is_stringable
boolean is_stringable(mixed $var)
检查变量是否可以转换为字符串。对于所有标量值(布尔值和具有__toString
方法的对象除外),返回true。
objectify
stdClass|mixed objectify(array|mixed $var)
递归地将关联数组转换为stdClass
对象。
arrayify
array|mixed arrayify(stdClass|mixed $var)
递归地将stdClass
对象转换为关联数组。
get_type_description
string get_type_description(mixed $var)
以描述性方式获取变量的类型。例如,“流资源”和“DateTime对象”。
expect_type
expect_type(mixed $var, string|string[] $type, string $throwable = null, string $message = null)
验证一个参数是否具有特定类型。
类型可以是任何内部类型,包括callable
和object
,类名或资源类型(例如流资源
)。不支持类型数组。
默认情况下会抛出TypeError
(PHP 7)。您可以指定任何Throwable
类的类名。对于PHP 5,您必须指定类名。
消息可能包含一个%s
,它将被$var
的类型替换。
示例
expect_type($input, ['array', 'stdClass']); expect_type($output, ['array', 'stdClass'], 'UnexpectedValueException', "Output should be an array or stdClass object, got a %s");
数组函数
array_only
array array_only(array $array, array $keys)
返回仅包含指定键的数组。
array_without
array array_without(array $array, array $keys)
返回不包含指定键的数组。
array_contains_all
boolean array_contains_all(array $array, array $subset, boolean $strict = false)
检查数组是否包含集合中的所有值。
此函数可以按预期与嵌套数组或包含对象的数组一起使用。
array_contains_all_assoc
boolean array_contains_all_assoc(array $array, array $subset, boolean $strict = false)
检查数组是否包含具有索引检查的集合中的所有值。
此函数可以按预期与嵌套数组或包含对象的数组一起使用。
array_contains_any
boolean array_contains_any(array $array, array $subset, boolean $strict = false)
检查数组是否包含集合中的任何值。
此函数可以按预期与嵌套数组或包含对象的数组一起使用。
array_contains_any_assoc
boolean array_contains_any_assoc(array $array, array $subset, boolean $strict = false)
检查数组是否包含具有索引检查的集合中的任何值。
此函数可以按预期与嵌套数组或包含对象的数组一起使用。
array_find
mixed array_find(array $array, callable $callback, int $flag = 0)
使用回调函数查找数组中的元素。如果没有找到元素,则返回值或FALSE。
标志确定将哪些参数发送到回调函数
ARRAY_FILTER_USE_KEY
- 将键作为唯一参数传递给回调,而不是值ARRAY_FILTER_USE_BOTH
- 将值和键作为参数传递给回调,而不是值- 默认为
0
,将值作为唯一参数传递给回调。
array_find_key
string|int|false array_find_key(array $array, callable $callback, int $flag = 0)
使用回调函数查找数组的键。如果没有找到元素,则返回键或FALSE。
array_flatten
array function array_flatten(string $glue, array $array)
展开嵌套的关联数组,连接键。
示例
$values = array_flatten('.', [ 'animal' => [ 'mammel' => [ 'ape', 'bear' ], 'reptile' => 'chameleon' ], 'colors' => [ 'red' => 60, 'green' => 100, 'blue' => 0 ] ]);
将变为
[ 'animal.mammel' => [ 'ape', 'bear' ], 'animal.reptile' => 'chameleon', 'colors.red' => 60, 'colors.green' => 100, 'colors.blue' => 0 ]
array_join_pretty
string array_join_pretty(string $glue, string $and, array $array);
使用'and'参数作为粘合剂连接数组,将最后两个项目作为粘合剂。
示例
echo "A task to " . array_join_pretty(", ", " and ", $chores) . " has been created.", PHP_EOL; echo array_join_pretty(", ", " or ", $names) . " may pick up this task.", PHP_EOL;
字符串函数
str_starts_with
boolean str_starts_with(string $string, $string $substr)
检查字符串是否以子字符串开头。
str_ends_with
boolean str_ends_with(string $string, string $substr)
检查字符串是否以子字符串结尾。
str_contains
boolean str_contains(string $string, string $substr)
检查字符串是否包含子字符串。
str_before
string str_before(string $string, string $substr)
获取第一个子字符串出现之前的部分字符串。如果未找到子字符串,则返回整个字符串。
str_after
string str_after(string $string, string $substr)
获取第一个子字符串出现之后的部分字符串。如果未找到子字符串,则返回空字符串。
str_remove_accents
string str_remove_accents(string $string)
将带重音的字符替换为普通字符。
str_slug
string str_slug(string $string, string $glue = '-')
从给定字符串生成一个URL友好的别名。
类型转换函数
camelcase
string camelcase(string $string)
将句子、StudlyCase、snake_case或kabab-case转换为camelCase。
studlycase
string studlycase(string $string, $ucfirst = true)
将句子、camelCase、snake_case或kabab-case转换为StudlyCase。
snakecase
string snakecase(string $string)
将句子、StudlyCase、camelCase或kabab-case转换为snake_case。
kababcase
string kababcase(string $string)
将句子、StudlyCase、camelCase或snake_case转换为kabab-case。
uncase
string uncase(string $string)
将StudlyCase、camelCase、snake_case或kabab-case转换为句子。
服务器函数
ip_in_cidr
boolean ip_in_cidr(string $ip, string $cidr)
检查IP地址是否在CIDR块中。
支持IPv4和IPv6。
ipv4_in_cidr
boolean ipv4_in_cidr(string $ip, string $cidr)
检查IPv4地址是否在CIDR块中。
ipv6_in_cidr
boolean ipv6_in_cidr(string $ip, string $cidr)
检查IPv6地址是否在CIDR块中。
inet_to_bits
string inet_to_bits(string $inet)
将inet_pton的输出转换为带位的字符串。
文件函数
file_contains
boolean file_contains(string $filename, string $string)
检查字符串是否存在于文件内容中。
此函数通过一次不加载整个文件内容来友好地使用内存。
fnmatch_extended
boolean fnmatch_extended(string $pattern, string $path)
将路径与通配符模式匹配。这是fnmatch的扩展版本。
?
匹配单个字符,除了/
#
匹配任意十进制字符(0-9)*
匹配任意字符,除了/
**
匹配任意字符[abc]
匹配a
、b
或c
{ab,cd,ef}
匹配ab
、cd
或ef
函数处理函数
call_user_func_assoc
mixed call_user_func_assoc(callable $callback, array $param_arr)
以关联数组作为命名参数调用回调。
对象函数
object_get_properties
array object_get_properties(object $object, bool $dynamic = true)
获取对象的公共属性。
与get_object_vars不同,此方法将只返回公共属性,而不管作用域如何。
动态标志控制输出是否应过滤,因此只有类中定义的属性被设置。
object_set_properties
array object_get_properties(object $object, array $data, bool $dynamic = true)
设置对象的公共属性。
动态标志控制是否应该过滤$data,因此只有类中定义的属性被设置。