Skip to content

Serializer — 序列化规则

  • 文件位置: kernel/Foundation/Data/Serializer.php
  • 命名空间: kernel\Foundation\Data
  • 是否可继承: 是

响应数据序列化规则管理器。定义/复用命名规则,对数据做字段筛选与类型转换。是 Controller::$responseSerializes 的核心。

属性

属性类型默认可见性说明
$useRuleNamestring""public实例绑定的规则名(构造时传入)
private static $Rulesarray[]private static静态规则仓库,保存所有已注册的命名规则

构造

__construct($RuleName) — 绑定规则名

参数

参数类型默认说明
$RuleNamestring绑定一个已注册的规则名,供实例使用该规则序列化

返回值

  • 无。

示例

php
$s = new Serializer("userPublic");

方法速查表

方法作用
Serializer::get获取规则(支持点号路径)
Serializer::add注册命名规则
Serializer::serialization按规则序列化数据
Serializer::load从文件加载规则(import() 唯一调用点)
Serializer::loadGet加载并获取规则

方法

Serializer::get($Names, $upperLevel = null) — 获取规则

从规则仓库中按名称获取规则。支持点号路径(如 "user.public")逐层读取。$Names 支持字符串或数组。

参数

参数类型默认说明
$Namesstring|array规则名或规则名数组(支持点号路径)
$upperLevelmixednull上级规则值,作为查找的起点上下文

返回值

  • mixed:匹配的规则,未找到返回 null

示例

php
$rule = Serializer::get("userPublic");
$rule = Serializer::get("user.public");

Serializer::add($Name, $Rule) — 注册规则

将命名规则注册到静态仓库,供后续 get()/serialization() 复用。

参数

参数类型默认说明
$Namestring规则名称
$Rulearray|mixed规则定义(键为字段名,值为类型/规则)

返回值

  • 无。

示例

php
Serializer::add("userPublic", [
    "id"   => "int",
    "name" => "string",
    "created_at" => "date",
]);

Serializer::serialization($RuleOrName, $Data, $SerializerName = "temp") — 按规则序列化

按给定规则(或已注册规则名)对数据执行字段筛选与类型转换。$RuleOrName 为字符串时按 SerializerName 作为临时规则名注册到仓库;为数组时直接使用。

参数

参数类型默认说明
$RuleOrNamearray|string规则数组,或已注册的规则名
$Datamixed待序列化的数据
$SerializerNamestring"temp"匿名规则使用的临时规则名

返回值

  • mixed:序列化后的数据。

示例

php
$data = Serializer::serialization("userPublic", $userData);
// 或直接传规则数组
$data = Serializer::serialization(["id" => "int", "name" => "string"], $userData);

Serializer::load($FileName, $ruleName = null, $BasePath = null) — 从文件加载规则

从规则文件加载序列化规则。底层调用全局 import() 函数加载 PHP 文件。是 import() 的唯一调用点。

参数

参数类型默认说明
$FileNamestring规则文件名
$ruleNamestring|nullnull从文件中提取的规则名
$BasePathstring|nullnull基础路径,缺省时使用默认路径

返回值

  • mixed:加载得到的规则。

示例

php
Serializer::load("userRules.php", "userPublic");

Serializer::loadGet(...) — 加载并获取规则

加载规则文件并立即获取指定规则。是 load()get() 的组合便捷方法。参数与 load()/get() 对齐(文件名、规则名、基础路径)。

参数

参数类型默认说明
变长参数mixed透传给加载与获取逻辑

返回值

  • mixed:加载并获取到的规则。

示例

php
$rule = Serializer::loadGet("userRules.php", "userPublic");

完整示例

php
use kernel\Foundation\Data\Serializer;

// 1. 注册规则
Serializer::add("userPublic", [
    "id"   => "int",
    "name" => "string",
]);

// 2. 序列化
$user = ["id" => "1", "name" => "张三", "password" => "secret"];
$data = Serializer::serialization("userPublic", $user);
// ["id" => 1, "name" => "张三"]

// 3. 或从文件加载
Serializer::load("App/Serializers/UserRules.php", "userPublic");