シンボリックでシリアル化/逆シリアル化
4129 ワード
シリアライザーとは
シリアライザーは、オブジェクトをXMLに変換したり、他の方法でXMLを変換したり、XMLをオブジェクトに変換するものです.
これは、JSONや他の形式にも行うことができます.documentationのようなサードパーティ製のシリアル化装置がありますが、今はsymfonyのデフォルトシリアライザーで動作します.
JML
symfonyのデフォルトシリアライザーの使い方
1 .シリアライザーを作曲家でインストールする
composer require symfony/serializer
2 .モデルの作成(デモの理由)
<?php
namespace App\Model;
class Person
{
private $age;
private $name;
private $sportsperson;
private $createdAt;
// Getters
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @return mixed
*/
public function getAge()
{
return $this->age;
}
/**
* @return mixed
*/
public function getCreatedAt()
{
return $this->createdAt;
}
// Issers
public function isSportsperson()
{
return $this->sportsperson;
}
/**
* @param mixed $name
*/
public function setName($name): void
{
$this->name = $name;
}
/**
* @param mixed $age
*/
public function setAge($age): void
{
$this->age = $age;
}
/**
* @param mixed $sportsperson
*/
public function setSportsperson($sportsperson): void
{
$this->sportsperson = $sportsperson;
}
/**
* @param mixed $createdAt
*/
public function setCreatedAt($createdAt): void
{
$this->createdAt = $createdAt;
}
}
SerializeObject ()というメソッドを使用してSerializerControllerを作成する
<?php
namespace App\Controller;
use App\Model\Person;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
class SerializerController
{
protected $encoder;
protected $normalizer;
protected $serializer;
protected $data;
/**
* @Route("/serialize-object", name="Serialize Object")
*/
public function serializeObject()
{
$this->encoder = [new XmlEncoder()];
$this->normalizer = [new ObjectNormalizer()];
$this->serializer = new Serializer($this->normalizer, $this->encoder);
$person = new Person();
$person->setName('foo');
$person->setAge(99);
$person->setSportsperson(false);
$xmlContent = $this->serializer->serialize($person, 'xml');
dd($xmlContent);
}
}
結果
オブジェクトを作成し、XMLにシリアル化して、次のようにdieとdumpを実行します.
4 .他のメソッドDeserializeObject ()をオブジェクトにdesializeオブジェクトに追加する
/**
* @Route("/deserialize-object", name="Deserialize Object")
*/
public function deserializeObject()
{
$this->encoder = [new XmlEncoder()];
$this->normalizer = [new ObjectNormalizer()];
$this->serializer = new Serializer($this->normalizer, $this->encoder);
$this->data = '<?xml version="1.0" encoding="UTF-8"?>
<Person>
<name>John Doe</name>
<age>88</age>
<sportsperson>true</sportsperson>
</Person>';
$personObject = $this->serializer->deserialize($this->data, Person::class, 'xml');
dd($personObject);
}
結果
今回はXMLを人といくつかのプロパティで変換した結果、次のようにdieとdumpになりました.
すべての人々thats
Reference
この問題について(シンボリックでシリアル化/逆シリアル化), 我々は、より多くの情報をここで見つけました
https://dev.to/eelcoverbrugge/symfony-serialize-deserialize-xml-404b
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
composer require symfony/serializer
<?php
namespace App\Model;
class Person
{
private $age;
private $name;
private $sportsperson;
private $createdAt;
// Getters
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @return mixed
*/
public function getAge()
{
return $this->age;
}
/**
* @return mixed
*/
public function getCreatedAt()
{
return $this->createdAt;
}
// Issers
public function isSportsperson()
{
return $this->sportsperson;
}
/**
* @param mixed $name
*/
public function setName($name): void
{
$this->name = $name;
}
/**
* @param mixed $age
*/
public function setAge($age): void
{
$this->age = $age;
}
/**
* @param mixed $sportsperson
*/
public function setSportsperson($sportsperson): void
{
$this->sportsperson = $sportsperson;
}
/**
* @param mixed $createdAt
*/
public function setCreatedAt($createdAt): void
{
$this->createdAt = $createdAt;
}
}
<?php
namespace App\Controller;
use App\Model\Person;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
class SerializerController
{
protected $encoder;
protected $normalizer;
protected $serializer;
protected $data;
/**
* @Route("/serialize-object", name="Serialize Object")
*/
public function serializeObject()
{
$this->encoder = [new XmlEncoder()];
$this->normalizer = [new ObjectNormalizer()];
$this->serializer = new Serializer($this->normalizer, $this->encoder);
$person = new Person();
$person->setName('foo');
$person->setAge(99);
$person->setSportsperson(false);
$xmlContent = $this->serializer->serialize($person, 'xml');
dd($xmlContent);
}
}
/**
* @Route("/deserialize-object", name="Deserialize Object")
*/
public function deserializeObject()
{
$this->encoder = [new XmlEncoder()];
$this->normalizer = [new ObjectNormalizer()];
$this->serializer = new Serializer($this->normalizer, $this->encoder);
$this->data = '<?xml version="1.0" encoding="UTF-8"?>
<Person>
<name>John Doe</name>
<age>88</age>
<sportsperson>true</sportsperson>
</Person>';
$personObject = $this->serializer->deserialize($this->data, Person::class, 'xml');
dd($personObject);
}
Reference
この問題について(シンボリックでシリアル化/逆シリアル化), 我々は、より多くの情報をここで見つけました https://dev.to/eelcoverbrugge/symfony-serialize-deserialize-xml-404bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol