koenie10 / lua-serializer
Lua 序列化/反序列化工具
v0.4
2017-12-19 15:29 UTC
Requires
- php: >=5.4
Requires (Dev)
- php: >=5.5
- doctrine/common: ~2.6
- jms/serializer: ~1.1
- phpunit/phpunit: ~4.4
- symfony/form: ~2.8
- symfony/validator: ~2.8
Suggests
- jms/serializer: Used to serialize/deserialize in e.g. Symfony2.
This package is auto-updated.
Last update: 2024-09-19 01:24:21 UTC
README
这是一个非常简单的 PHP 用 Lua 序列化/反序列化工具,支持 JMS Serializer。
安装
使用 Composer 进行安装
composer require koesie10/lua-serializer
用法
提供了序列化和反序列化的外观
$result = \Vlaswinkel\Lua\Lua::serialize([ 'foo' => 'bar']); /** * Returns: * { * foo = "bar", * } */ $result = \Vlaswinkel\Lua\Lua::deserialize('{ foo = "bar" }') /** * Returns: * [ 'foo' => 'bar' ] */
您也可以直接使用所有类
$result = \Vlaswinkel\Lua\Serializer::encode([ 'foo' => 'bar' ]); // returns the same as above $parser = new \Vlaswinkel\Lua\Parser(new \Vlaswinkel\Lua\TokenStream(new \Vlaswinkel\Lua\InputStream('{ foo = "bar" }'))); $result = \Vlaswinkel\Lua\LuaToPhpConverter::convertToPhpValue($parser->parse()); // returns the same as above
Symfony2 中与 JMS Serializer 集成
通过在您的 services.yml 中添加以下行,可以轻松地将此序列化器包含到 Symfony2 中,与 JMSSerializer 集成
services: app.lua.serialization_visitor: class: Vlaswinkel\Lua\JMS\LuaSerializationVisitor arguments: ["@jms_serializer.naming_strategy"] tags: - { name: jms_serializer.serialization_visitor, format: lua } app.lua.deserialization_visitor: class: Vlaswinkel\Lua\JMS\LuaDeserializationVisitor arguments: ["@jms_serializer.naming_strategy"] tags: - { name: jms_serializer.deserialization_visitor, format: lua } app.lua.array_handler: class: Vlaswinkel\Lua\JMS\LuaArrayCollectionHandler tags: - { name: jms_serializer.subscribing_handler } app.lua.date_handler: class: Vlaswinkel\Lua\JMS\LuaDateHandler tags: - { name: jms_serializer.subscribing_handler } app.lua_constraint_violation_handler: class: Vlaswinkel\Lua\JMS\LuaConstraintViolationHandler tags: - { name: jms_serializer.subscribing_handler } app.lua.form_handler: class: Vlaswinkel\Lua\JMS\LuaFormHandler arguments: ["@translator"] tags: - { name: jms_serializer.subscribing_handler } app.lua_php_collection_handler: class: Vlaswinkel\Lua\JMS\LuaPhpCollectionHandler tags: - { name: jms_serializer.subscribing_handler }
如果您想让 Symfony 识别 Lua 作为请求/响应格式,也请在您的 config.yml 中添加以下内容
framework:
request:
formats:
lua: ['application/x-lua', 'application/lua']
在这种情况下,我已添加 application/x-lua 和 application/lua 作为 MIME 类型,但由于 Lua 内容类型没有标准,这些可以随意指定。
现在您可以使用 lua 格式进行序列化
public function indexAction() { return $this->get('serializer')->serialize([ 'foo' => 'bar' ], 'lua'); }
运行测试
安装依赖项后,您可以使用 PHPUnit 运行自动化单元测试
vendor/bin/phpunit
许可证
此库采用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。