koenie10/lua-serializer

Lua 序列化/反序列化工具

v0.4 2017-12-19 15:29 UTC

This package is auto-updated.

Last update: 2024-09-19 01:24:21 UTC


README

Build Version License Code Coverage Code Quality Downloads

这是一个非常简单的 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-luaapplication/lua 作为 MIME 类型,但由于 Lua 内容类型没有标准,这些可以随意指定。

现在您可以使用 lua 格式进行序列化

public function indexAction() {
    return $this->get('serializer')->serialize([ 'foo' => 'bar' ], 'lua');
}

运行测试

安装依赖项后,您可以使用 PHPUnit 运行自动化单元测试

vendor/bin/phpunit

许可证

此库采用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。