Deprecated: Optional parameter $keys declared before required parameter $cms_id is implicitly treated as a required parameter in /home/www/dev/work/class/blog/CmsKey.php on line 75

Deprecated: Creation of dynamic property lvesu\lvesu\controller\blog\php::$title is deprecated in /home/www/dev/work/website/lvesu/class/controller/blog/php.php on line 28

Deprecated: Creation of dynamic property lvesu\lvesu\controller\blog\php::$outlink is deprecated in /home/www/dev/work/website/lvesu/template/blog/cms/php.manual.tpl on line 2

Deprecated: Creation of dynamic property lvesu\lvesu\controller\blog\php::$status is deprecated in /home/www/dev/work/website/lvesu/template/blog/index.head.php on line 2
PHP - Manual: 序列化 - 互联网笔记

略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: 序列化

2025-05-14

序列化

枚举的序列化不同于对象。 尤其是它们有新的序列化代码: "E",指示了 enum 条目名称。 然后反序列化动作能够设置变量为现有的单例值。 确保那样:

<?php

Suit
::Hearts === unserialize(serialize(Suit::Hearts));

print
serialize(Suit::Hearts);
// E:11:"Suit:Hearts";
?>

如果枚举和它的条目在反序列化时,无法匹配序列化的值, 会导致 warning 警告,并返回 false

把纯粹枚举序列化为 JSON 将会导致错误。 把回退枚举序列化为 JSON 时,仅会用标量值的形式,以合适的类型表达。 可通过实现 JsonSerializable 来重载序列化行为。

对于 print_r(),输出的枚举条目略微不同于对象, 能减少迷惑。

<?php

enum Foo {
case
Bar;
}

enum
Baz: int {
case
Beep = 5;
}

print_r(Foo::Bar);
print_r(Baz::Beep);

/* 产生

Foo Enum (
[name] => Bar
)
Baz Enum:int {
[name] => Beep
[value] => 5
}
*/
?>
添加备注

用户贡献的备注

此页面尚无用户贡献的备注。

官方地址:https://www.php.net/manual/en/language.enumerations.serialization.php

冷却塔厂家 广告
中文GPT4.0无需注册 广告
北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3