diff --git a/components/serializer.rst b/components/serializer.rst index ba4a8189a5f..b0e80a680a0 100644 --- a/components/serializer.rst +++ b/components/serializer.rst @@ -627,6 +627,101 @@ having unique identifiers:: var_dump($serializer->serialize($org, 'json')); // {"name":"Les-Tilleuls.coop","members":[{"name":"K\u00e9vin", organization: "Les-Tilleuls.coop"}]} +Handling Serialization Depth +---------------------------- + +The Serializer component is able to detect and limit the serialization depth. +It is especially useful when serializing large trees. Assume the following data +structure:: + + namespace Acme; + + class MyObj + { + public $foo; + + /** + * @var self + */ + public $child; + } + + $level1 = new MyObj(); + $level1->foo = 'level1'; + + $level2 = new MyObj(); + $level2->foo = 'level2'; + $level1->child = $level2; + + $level3 = new MyObj(); + $level3->foo = 'level3'; + $level2->child = $level3; + +The serializer can be configured to set a maximum depth for a given property. +Here, we set it to 2 for the ``$child`` property: + +.. configuration-block:: + + .. code-block:: php-annotations + + use Symfony\Component\Serializer\Annotation\MaxDepth; + + namespace Acme; + + class MyObj + { + /** + * @MaxDepth(2) + */ + public $foo; + + // ... + } + + .. code-block:: yaml + + Acme\MyObj: + attributes: + foo: + max_depth: 2 + + .. code-block:: xml + + + + + + 2 + + + +The metadata loader corresponding to the chosen format must be configured in +order to use this feature. It is done automatically when using the Symfony +Standard Edition. When using the standalone component, refer to +:ref:`the groups documentation ` to +learn how to do that. + +The check is only done if the ``enable_max_depth`` key of the serializer context +is set to ``true``. In the following example, the third level is not serialized +because it is deeper than the configured maximum depth of 2:: + + $result = $serializer->normalize($level1, null, array('enable_max_depth' => true)); + /* + $result = array( + 'foo' => 'level1', + 'child' => array( + 'foo' => 'level2', + 'child' => array( + 'child' => null, + ), + ), + ); + */ + Handling Arrays --------------- pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy