PHP Fails to Deserialize Date Objects Created in Javascript
If a Date object is created in Javascript (new Date()), and is serialized with MessagePack, then PHP will fail to deserialize with the following message:
PHP Warning: [msgpack] (php_msgpack_unserialize) Parse error
This happens if the Date object is by itself, or part of another object. It also happens if the serialization is done with either of the two javascript libraries listed on https://msgpack.org
- https://github.com/kawanet/msgpack-lite: Serializes
Dateas ext 8 (0xc7). - https://github.com/ygoe/msgpack.js: Serializes
Dateas timestamp 64 (0xd7).
MessagePack Specification: https://github.com/msgpack/msgpack/blob/master/spec.md
Expected Behavior: Javascript Date is deserialized to PHP DateTime.
Unfortunately, msgpack-php doesn't support the ext type yet (see this comment). As a workaround, you can use the pure php msgpack library.
Are there plans to do so, or is this library no longer being maintained? I noticed there hasn't been a release since December 6, 2016. I would generally prefer an extension as they are likely to have better performance (and one of the benefits of MessagePack is better performance), but if the PHP implementation is the one being maintained, then that would be a better choice. Is it recommended that the PHP implementation be used for new projects instead of the PHP extension?
This is on the roadmap now.