jasny/php-functions

一组有用的PHP函数

v4.1.0 2018-09-21 07:23 UTC

README

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight Packagist Stable Version Packagist License

一组本应包含在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.jsonautoload部分。

"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)

验证一个参数是否具有特定类型。

类型可以是任何内部类型,包括callableobject,类名或资源类型(例如流资源)。不支持类型数组。

默认情况下会抛出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] 匹配abc
  • {ab,cd,ef} 匹配abcdef

函数处理函数

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,因此只有类中定义的属性被设置。