nonamephp / php7-common
PHP 7 常用库集合
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: 3.2.*
README
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
实现以下接口:Countable
、ArrayAccess
、IteratorAggregate
、Serializable
、JsonSerializable
用法示例
<?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
验证值是否为 nullbool
,boolean
验证值是否为布尔值scalar
验证值是否为标量(整数、浮点数、字符串或布尔值)str
,string
验证值是否为字符串num
,numeric
验证值是否为数值int
,integer
验证值是否为整数float
,double
验证值是否为浮点数/双精度浮点数alnum
,alphanumeric
验证值仅包含字母数字字符alpha
验证值仅包含字母字符arr
,array
验证值是否为数组object
验证值是否为对象callable
验证值是否为可调用email
验证值是否为有效的电子邮件地址ip
验证值是 IPv4 或 IPv6 之一ipv4
验证值是 IPv4ipv6
验证值是 IPv6date
,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()
。