PHPackages                             lit/parameter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. lit/parameter

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

lit/parameter
=============

数据结构映射验证器

2.0.11(1y ago)110.6k↓40%1MITPHPPHP &gt;=5.6.0

Since May 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ghostong/LitParameter)[ Packagist](https://packagist.org/packages/lit/parameter)[ RSS](/packages/lit-parameter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (18)Used By (1)

LitParameter 映射验证器
==================

[](#litparameter-映射验证器)

说明
--

[](#说明)

映射验证器: 是解决业务中数据映射与参数验证有效性的解决方案.

旧版本
---

[](#旧版本)

V1 实参验证器 [参考文档](README_V1.md)

此文档为最新版本文档.

初始化
---

[](#初始化)

```
/**
 * @property Types $name
 * @property Types $age
 * @property Types $height
 * @property Types $gender
 * @property Types $title
 * @property Types $description
 * @property Types $children
 * @property Types $city
 * @property Types $number
 * @property Types $data
 * @property Types $create_time
 */
class AbcMapper extends \Lit\Parameter\V2\Parameter
{
    //是否使用默认错误, 开启此选项后, 不调用setCode(), setMsg() 即使用默认错误码和错误信息
    protected $defaultError = true;
    //默认错误码 默认值: 77777 可自定义
    protected $defaultErrorCode = '390';
    //默认错误信息 默认值: 参数错误(%s), %s 会被替换为 参数名成
    protected $defaultErrorMsg = '参数错误了';

    public function __construct($params = []) {

        //声明一个属性 age, 整型, 介于12值18之间, 如果验证出错, 错误代码: 10001, 错误信息: 年龄错误 (下同)
        $this->age->isInteger()->between(12, 18)->setCode(10001)->setMsg("年龄错误");

        //声明一个属性 height, 整型, 大于120, 小于180
        $this->height->isInteger()->ge(120)->le(180)->setCode(10002)->setMsg("身高错误");

        //声明一个属性 name, 字符串, 最小长度3, 最大长度32
        $this->name->isString()->minLength(3)->maxLength(32)->setCode(10003)->setMsg("名称错误");

        //声明一个属性 gender, 字符串, 枚举: m, f
        $this->gender->isString()->in(["m", "f"])->setCode(10004)->setMsg("性别错误");

        //声明一个属性 title, 字符串, 长度为5
        $this->title->isString()->length(5)->notEmpty()->setCode(10005)->setMsg("标题错误");

        //声明一个属性 description, 字符串, 不为 null
        $this->description->isString()->notNull()->setCode(10006)->setMsg("描述错误");

        //声明一个属性 children, 数组, 元素数最小2个, 最大3个
        $this->children->isArray()->minSize(2)->maxSize(3)->setCode(10007)->setMsg("子集错误");

        //声明一个属性 city, 字符串, 无赋值时默认为
        $this->city->isString()->setDefault("zz")->setCode(10008)->setMsg("城市错误");

        //声明一个属性 number, 数值, 使用回调函数自行验证
        $this->number->isNumeric()->callback(function ($number) {
            return $number > 999;
        })->setCode(10009)->setMsg("编号错误");

        //声明一个属性 data, 数组, 数组的键不能包含 aa, bb , 数组的键必须包含 cc, dd
        $this->data->isArray()->excFields(["aa", "bb"])->incFields(["cc", "dd"])->setCode(10010)->setMsg("数据集错误");

        $this->create_time->isDateTime()->formatIs('Y-m-d H');

        //启用快速赋值(非必须)
        parent::__construct($params);
    }

}
```

使用方法
----

[](#使用方法)

### 使用验证器

[](#使用验证器)

#### 映射器赋值

[](#映射器赋值)

```
//赋值
$abcMapper = new AbcMapper();
$abcMapper->age = 12;
$abcMapper->height = 180;
$abcMapper->name = "good boy";
$abcMapper->gender = "f";
$abcMapper->title = "title";
$abcMapper->description = "";
$abcMapper->children = ["a", "b", "c"];
$abcMapper->number = 9990;
$abcMapper->data = ["cc" => 11, "dd" => 22, "ee" => 33];

//快速赋值 (需在映射器中调用父类构造函数)
$abcMapper = new AbcMapper(["age"=>12, "name" =>"good boy"]);
```

#### 获取已赋值属性的值

[](#获取已赋值属性的值)

```
var_dump($abcMapper->name->value());
var_dump($abcMapper->age->value());
```

#### 获取批量获取属性的值

[](#获取批量获取属性的值)

```
//已赋值的属性
var_dump($abcMapper->getAssigned());
//所有属性
var_dump($abcMapper->toArray());
//是否为空
var_dump($abcMapper->isEmpty());
```

#### 指定必填参数并验证

[](#指定必填参数并验证)

```
var_dump($abcMapper->must(["age", "name"])->check());
```

#### 验证失败的调试方法

[](#验证失败的调试方法)

```
//错误码
$abcMapper->errCode();
//错误码
$abcMapper->errMsg();
//错误的属性名称
$abcMapper->errName();
//错误属性的值
$abcMapper->errValue();
//出错的验证条件
$abcMapper->errCondition();
```

#### 开启错误位置调试

[](#开启错误位置调试)

```
ParamChecker::debugOn();
```

### 示例

[](#示例)

#### 验证一个数组的有效性

[](#验证一个数组的有效性)

```
//验证一个数组是否符合规范, 保证要验证的形参已经编写过规则. (参考初始化)
$array = ["title"=>"title","description"=>"description"];
if ($abcMapper->must(["age"])->check($array)) { //如果验证失败
    var_dump("验证成功");
}else{
    var_export([
        "errCode" => $abcMapper->errCode(),
        "errMsg" => $abcMapper->errMsg(),
        "errName" => $abcMapper->errName(),
        "errValue" => $abcMapper->errValue(),
        "errCondition" => $abcMapper->errCondition()
    ]);//调试信息
}
```

#### 验证一个函数参数的有效性

[](#验证一个函数参数的有效性)

```
//验证函数或者类方法, 保证要验证的形参已经编写过规则. (参考初始化)
function test($bookId, $bookName, $bookTags, $bookDesc) {
    if (!$abcMapper->check(get_defined_vars())) { //如果验证失败
        var_export([
            "errCode" => $abcMapper->errCode(),
            "errMsg" => $abcMapper->errMsg(),
            "errName" => $abcMapper->errName(),
            "errValue" => $abcMapper->errValue(),
            "errCondition" => $abcMapper->errCondition()
        ]);//调试信息
        return false;
    }
    //正常业务逻辑
    return true;
}

//在调用时传入实参
test(1234,"abcd",["id"=>890,"name"=>"xyz","target"=>"abc","bug1"=>"bug1"],"opqrst");
```

支持方法
----

[](#支持方法)

方法说明isString()初始化一个字符串类型参数验证isNumber()初始化一个整型类型参数验证isNumeric()初始化一个数值类型参数验证isArray()初始化一个数组类型参数验证isFloat()初始化一个浮点类型参数验证errCode()获取验证错误代码errMsg()获取验证错误信息errName()获取错误的属性名称errValue()获取错误属性的值errCondition()出错的验证条件方法列表
----

[](#方法列表)

可用选项isStringisNumberisArrayisNumeric说明notNull()✔️✔️✔️✔️非nullnotEmpty()✔️✔️✔️✔️非空callback()✔️✔️✔️✔️使用回调函数验证length()✔️❌❌️❌字符串长度maxLength()✔️❌❌️❌字符串最大长度minLength()✔️❌❌️❌字符串最小长度in()✔️✔️❌️✔️参数值白名单between()❌️✔️❌️✔️在 a...b 两个数字(包含)之间gt()❌️✔️❌️✔️参数值小于一个数字lt()❌️✔️❌️✔️参数值大于一个数字ge()❌️✔️❌️✔️参数值大于等于一个数字le()❌️✔️❌️✔️参数值小于等于一个数字minSize()❌️❌️✔️❌️数组最小元素数maxSize()❌️❌️✔️❌️数组最大元素数incFields()❌️❌️✔️❌️必须包含某些键excFields()❌️❌️✔️❌️必须排除某些键setCode()✔️✔️✔️✔️设置验证错误代码setMsg()✔️✔️✔️✔️设置验证错误信息

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~76 days

Recently: every ~55 days

Total

17

Last Release

598d ago

Major Versions

0.1.0 → 2.0.12023-03-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/46be0247284f1f1256accab2ccdb4900e568f6df746a9dc96bf7d6fdfd614d0d?d=identicon)[litong](/maintainers/litong)

---

Top Contributors

[![ghostong](https://avatars.githubusercontent.com/u/5644948?v=4)](https://github.com/ghostong "ghostong (36 commits)")

### Embed Badge

![Health badge](/badges/lit-parameter/health.svg)

```
[![Health](https://phpackages.com/badges/lit-parameter/health.svg)](https://phpackages.com/packages/lit-parameter)
```

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[bensampo/laravel-enum

Simple, extensible and powerful enumeration implementation for Laravel.

2.0k15.9M104](/packages/bensampo-laravel-enum)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)[crazybooot/base64-validation

Laravel validators for base64 encoded files

1341.9M8](/packages/crazybooot-base64-validation)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
