yiisoft/serializers

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить
Loveorigami
Сообщения: 971
Зарегистрирован: 2014.08.27, 21:54

yiisoft/serializers

Сообщение Loveorigami » 2019.07.17, 11:21

Предлагаю, создать такой пакет.
За основу взять (вытащить) из кеша
https://github.com/yiisoft/cache/tree/m ... Serializer

Добавить в него https://github.com/zumba/json-serializer для сериализации замыканий Closure

Будет полезно использовать нужный сериализатор в разных задачах

1. В кеше
2. В библиотеках - https://github.com/yiisoft/mailer-swiftmailer/issues/7
3. Для записи логов (с Closure в том числе)
4. Не плодить свои сериализаторы в каждом компоненте - https://github.com/yiisoft/yii2-queue/b ... ue.php#L71
https://github.com/yiisoft/yii2-queue/t ... erializers

+ для справки, в 7.4 добавится новые методы

Новый механизм сериализации объектов

Сегодня PHP предлагает два механизма для настраиваемой сериализации объекта - магические методы __sleep()/__wakeup() и интерфейс Serializable. PHP 7.4 добавится новый механизм, пытающийся совместить в себе универсальность Serializable и подход к реализации __sleep()/__wakeup().

Работа будет происходить через 2 новых метода:

Код: Выделить всё

// Returns array containing all the necessary state of the object.
public function __serialize(): array;

// Restores the object state from the given data array.
public function __unserialize(array $data): void;
Они очень похожи на Serializable. Отличие от интерфейса состоит в том, что вместо сериализованных строк работа происходит с исходными массивами.

Код: Выделить всё

class Foo
{
    private $baz;

    public function __serialize(): array 
    {
        return ["baz" => $this->baz];
    }

    public function __unserialize(array $data) 
    {
        $this->baz = $data["baz"];
    }
}

Аватара пользователя
samdark
Администратор
Сообщения: 9134
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/serializers

Сообщение samdark » 2019.07.17, 11:35

Отличная идея. Сделаем: https://github.com/yiisoft/cache/issues/23

Вот новые методы нам не особо интересны. Они для самих данных, а не для их сериализатора.

Ответить