Implement `unserialize` driver property
SilverFire opened this issue · 6 comments
In order to provide consistency, Driver
class should get unserialize
property to store the unserialization function
Я специально не делал это свойство. Это может спровоцировать некачественный код на стороне приложения. В #3 обсуждалось.
Если работать в этом направлении, то мне больше нравится вариант с выносом сериализации в интерфейс:
interface JobSerializer
{
/**
* @param Job|mixed $job
* @return string
*/
public function serialize($job);
/**
* @param string $serialized
* @return Job
*/
public function unserialize($serialized);
}
Сделать пару реализаций PhpJobSerializer
и JsonJobSerializer
, и подключать что больше нравится к драйверу:
abstract class Driver extends Object
{
public $serializer = PhpJobSerializer::class;
//...
}
Извиняюсь, поспешил и не перечитал трекер на предмет похожих Issue.
Я создал этот Issue по причине неконсистентности — меня беспокоит что есть возможность кастомизировать сериализацию, но нет возможности повлиять на десериализацию.
Да, решение с отдельным классом более правильное.
Могу сделать Pull Request.
Я создал этот Issue по причине неконсистентности — меня беспокоит что есть возможность кастомизировать сериализацию, но нет возможности повлиять на десериализацию.
Изначально это был костыль, чтобы обеспечить совместимость с внешними воркерами. Но, если эта возможность востребована, нужно делать.
Могу сделать Pull Request.
Да, буду признателен.
Сделаю, но не сильно быстро
Да, это понятно. Если появится время сделать раньше, напишу, чтобы напрасно не отвлекать.
Готово.