Symfony에서 XML 직렬화/역직렬화
4622 단어 deserializesymfonyserializexml
시리얼라이저란 무엇입니까?
직렬 변환기는 개체를 XML로 변환(직렬화)하거나 반대로 XML을 개체로 변환(역직렬화)하기 위한 것입니다.
이것은 JSON 및 기타 형식에도 수행할 수 있으므로 Symfony의 documentation을 살펴보십시오. JML 과 같은 타사 직렬 변환기가 있지만 지금은 Symfony의 기본 직렬 변환기를 사용하겠습니다.
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;
}
}
3. 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);
}
}
결과
우리는 객체 Person을 생성하고 이를 XML로 직렬화하여 다음과 같은 다이와 덤프를 생성했습니다.
4. 다른 메서드 deserializeObject()를 추가하여 XML을 개체로 역직렬화합니다.
/**
* @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);
}
결과
이번에는 Person 및 일부 속성을 사용하여 xml을 변환했으며 결과적으로 다음과 같이 다이 및 덤프가 발생했습니다.
다 여러분~
Reference
이 문제에 관하여(Symfony에서 XML 직렬화/역직렬화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
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
이 문제에 관하여(Symfony에서 XML 직렬화/역직렬화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eelcoverbrugge/symfony-serialize-deserialize-xml-404b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)