nonamephp/php7-common

PHP 7 常用库集合

1.0.0 2018-03-20 05:22 UTC

This package is auto-updated.

Last update: 2024-09-12 19:24:41 UTC


README

Build Status

php7-common

PHP 7.1+ 的常用库集合。

安装

使用 Composer 将 php7-common 安装到您的项目中。

composer require nonamephp/php7-common

包含的库

  • Noname\Arr
  • Noname\Collection
  • Noname\Str
  • Noname\Validator

\Noname\Arr

用于处理数组的辅助库。

Arr 方法

static flatten(array $array, string $separator = '.') : array

使用自定义分隔符展开关联数组。默认情况下,此方法将使用点 (.) 作为 $separator

static dot(array $array) : array

Arr::flatten() 的别名,始终使用点 (.) 分隔符。

static each(array $array, callable $callable) : array

递归地将可调用的返回值分配给每个数组项。保留数组键。

<?php
use Noname\Arr;

$values = [1, 2, 3, 4, 5];

// @return [2, 4, 6, 8, 10]
$values_doubled = Arr::each($values, function ($value) {
    return $value * 2;
});

\Noname\Collection

使用关联数组创建 Collection,以提供用于处理数据的有帮助方法。

Collection 实现以下接口:CountableArrayAccessIteratorAggregateSerializableJsonSerializable

用法示例

<?php
use Noname\Collection;

$userData = [
    'user_id' => 100,
    'user_name' => 'John Doe',
    'user_email' => 'john.doe@example.org'
];

$collection = new Collection($userData);

// output: 'john.doe@example.org'
echo $collection->get('user_email');

Collection 方法

__construct(array $items = []) : Collection

创建 Collection 实例。可选地传递关联数组以预先填充集合中的项。

static make(...$arrays) : Collection

从一个或多个数组中创建集合。

set(string $key, mixed $value) : void

向集合添加项。如果 $key 在集合中已存在,则将其覆盖。

get(string|array $key, mixed $default = null) : mixed

从集合中获取项。如果找不到项,则返回 $default

将项键的数组传递给 $key 的值将导致返回一个包含多个项的数组。缺失的键将返回值为 $default

has(string $key) : bool

检查集合中是否存在具有相同 $key 的项。

is(string $key, mixed $value, mixed $operater = null) : bool

将项的值与 $value 进行比较。默认情况下,该方法将检查项的值是否等于 $value。可选地,您可以提供 $operator 以更改比较逻辑。

支持的 $operator 值:======>>=<<=<>!=

注意:=== 是相同的,但 === 将执行严格比较。 <>!= 是相同的。

pluck(string $key, mixed $default = null) : mixed

从集合中提取项。如果 $key 在集合中不存在,则返回 $default

delete(string $key) : void

从集合中删除项。

destroy() : void

从集合中删除所有项。

count() : int

返回集合中所有项的数量。

keys() : array

返回包含集合中所有项的键的数组。

values() : array

返回包含集合中所有项的值的数组。

all() : array

toArray() 的别名。

toArray() : array

返回集合中所有项的数组。

toJson() : string

返回JSON格式的集合。

flatten() : array

使用点(.)符号将集合中的所有项展平。

\Noname\Str

用于处理字符串的辅助库。

Str 方法

static startsWith(string $string, string $prefix, bool $caseSensitive = true) : bool

检查字符串是否以指定的前缀开头。默认情况下,此方法区分大小写。

static endsWith(string $string, string $suffix, bool $caseSensitive = true) : bool

检查字符串是否以指定的后缀结尾。默认情况下,此方法区分大小写。

static equals(string $a, string $b, bool $caseSensitive = true) : bool

检查两个字符串是否相等。默认情况下,此方法区分大小写。

static contains(string $string, string $search, bool $caseSensitive = true) : bool

检查字符串是否包含另一个字符串。默认情况下,此方法区分大小写。

static toArray(string $string) : array

将字符串拆分为包含每个字符的数组。

\Noname\Validator

使用 Validator 根据一组规则验证您的数据。

用法示例
<?php
use Noname\Validator;

// Data to be validated
$data = [
    'customer_id' => 100,
    'customer_email' => 'john.doe@example.org'
];

// Validation rules
$rules = [
    'customer_id' => 'int',  // customer_id MUST be an integer
    'customer_email' => 'email' // customer_email MUST be an email address
];

// Create Validator
$validator = new Validator($data, $rules);

// Validate data using rules
// @return bool
$valid = $validator->validate();

if ($valid) {
    echo 'Data passed validation!';
} else {
    $errors = $validator->getErrors();
    print_r($errors);
}

内置验证类型

  • *, any 对任何数据类型始终通过验证
  • null 验证值是否为 null
  • bool, boolean 验证值是否为布尔值
  • scalar 验证值是否为标量(整数、浮点数、字符串或布尔值)
  • str, string 验证值是否为字符串
  • num, numeric 验证值是否为数值
  • int, integer 验证值是否为整数
  • float, double 验证值是否为浮点数/双精度浮点数
  • alnum, alphanumeric 验证值仅包含字母数字字符
  • alpha 验证值仅包含字母字符
  • arr, array 验证值是否为数组
  • object 验证值是否为对象
  • callable 验证值是否为可调用
  • email 验证值是否为有效的电子邮件地址
  • ip 验证值是 IPv4 或 IPv6 之一
  • ipv4 验证值是 IPv4
  • ipv6 验证值是 IPv6
  • date, datetime 验证值是日期/日期时间
  • resource 验证值是资源
  • stream 验证值是流
  • dir, directory 验证值是目录
  • file 验证值是文件

提示:[] 添加到任何类型(例如 int[])将验证值是否为数组。

Validator 方法

__construct(array $values, array $rules) : Validator

创建 Validator 实例。

addType(string $typeName, array $typeRule) : void

添加自定义验证类型。以下示例将添加一个类型为 equals_2,它验证值是否等于 2,否则将设置错误。

<?php
use Noname\Validator;

// Data to be validated
$values = ['a' => 3];

// Validation rules
$rules = ['a' => ['type' => 'equals_2']];

// Create Validator
$validator = new Validator($values, $rules);

// Add custom 'equals_2' type
$validator->addType('equals_2', [
    'validator' => function ($value, $rule, $validator) {
        $valid = $value === 2;
        if (!$valid) {
            $validator->setError($rule['name'], 'Value does not equal 2');
        }
        return $valid;
    }
]);

// Validate data using rules
// @return bool
$valid = $validator->validate();

if ($valid) {
    echo 'Data passed validation!';
} else {
    $errors = $validator->getErrors();
    print_r($errors);
}

注意:必须在调用 validate() 之前添加自定义类型,否则将抛出 InvalidArgumentException

addValue(string $name, mixed $value) : void

将值添加到要验证的数据集中。

addValues(array $values) : void

将多个值添加到要验证的数据集中。

values() : array

返回要验证的已设置值的数组。

addRule(string $name, mixed $rule) : void

向验证器添加规则。

addRules(array $rules) : void

向验证器添加多个规则。

rules() : array

返回已设置验证规则的数组。

validate() : bool

根据设置的规则验证数据集。

hasErrors() : bool

检查在验证过程中是否设置了任何错误。

getErrors() : array

返回在验证过程中设置的错误数组。

静态方法 static is(string $type, mixed $value) : bool

用于检查 $value 是否为有效的 $type。您可以为 $type 传递任何内置验证器类型。

此方法在验证单个值时非常有用。

<?php
use Noname\Validator;

Validator::is('string', 'Hello world!'); // @return true
Validator::is('integer', 'Hello world!'); // @return false
static is{Type}(mixed $value) : bool

is() 类似,但类型被传递到方法名称中。

<?php
use Noname\Validator;

Validator::isString('Hello world!'); // @return true
Validator::isInteger('Hello world!'); // @return false

注意:这些方法区分大小写。如果您遇到问题,建议您使用 is()