## 序列化

枚举的序列化不同于对象。 尤其是它们有新的序列化代码： `"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
    }
    */
    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open