如何在 Symfony 中反序列化数组

pio*_*712 0 php arrays json symfony deserialization

我想在 Symfony 中将数组反序列化为类,但是如果不使用 json 或 XML 等,我找不到一种方法来做到这一点。

这是类:

class Product
{
    protected $id;
    protected $name;
    ...
    public function getName(){
    return $this->name;
    }
    ...

} 
Run Code Online (Sandbox Code Playgroud)

我想要反序列化为 Product 类的数组。

$product['id'] = 1;
$product['name'] = "Test";
...
Run Code Online (Sandbox Code Playgroud)

Paw*_*zuk 6

您需要直接使用反规范化器。

\n\n

版本:

\n\n
class Version\n{\n    /**\n     * Version string.\n     *\n     * @var string\n     */\n    protected $version = \'0.1.0\';\n\n    public function setVersion($version)\n    {\n        $this->version = $version;\n\n        return $this;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

用法:

\n\n
use Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer;\nuse Symfony\\Component\\Serializer\\Serializer;\nuse Version;\n\n$serializer = new Serializer(array(new ObjectNormalizer()));\n$obj2 = $serializer->denormalize(\n    array(\'version\' => \'3.0\'),\n    \'Version\',\n    null\n);\n\ndump($obj2);die;\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果:

\n\n
Version {#795 \xe2\x96\xbc\n  #version: "3.0"\n}\n
Run Code Online (Sandbox Code Playgroud)\n