. , , " ".
<?php
require_once __DIR__ . '/../../../app/Autoload.php';
use JMS\Serializer\Annotation as Serializer;
class Order
{
private $id;
private $products;
private $total;
private $someInternalProperty;
function __construct($products)
{
$this->id = rand(0, 100);
$this->products = $products;
$this->total = rand(100, 1000);
$this->someInternalProperty = 'Flag';
}
}
class Product
{
private $id;
private $name;
private $price;
private $description;
private $hiddenProperty;
function __construct($id, $name, $price, $description)
{
$this->id = $id;
$this->name = $name;
$this->price = $price;
$this->description = $description;
$this->hiddenProperty = 42;
}
}
$product1 = new Product(
1,
'Banana',
10,
'Yellow'
);
$order = new Order([
$product1,
new Product(
2,
'Tomato',
12,
'Red'
)
]);
$serializer = \JMS\Serializer\SerializerBuilder::create()
->setPropertyNamingStrategy(new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()))
->build();
print_r([
$serializer->serialize(
$order,
'json',
\JMS\Serializer\SerializationContext::create()
->setSerializeNull(true)
->setGroups(['Default'])
),
$serializer->serialize(
$product1,
'json',
\JMS\Serializer\SerializationContext::create()
->setSerializeNull(true)
->setGroups(['edit'])
),
]);
:
Array
(
[0] => {"id":86,"products":[{"id":1,"name":"Banana"},{"id":2,"name":"Tomato"}],"total":644}
[1] => {"id":1,"name":"Banana","price":10,"description":"Yellow"}
)
JMS-Serializer:)