我正在将ArrayCollection传递给自定义的Symfony Normalizer:
$container = new ArrayCollection();
$container->set('root', $processor->getFile());
$container->get('root')->each(function($node) {
$container->set('node', $node);
$data = $this->serializer->normalize($container);
});
该集合包含两个 Symfony Crawler 指针。指向根对象的指针和循环中的当前指针(当前节点(,因此我可以从父级和当前子级中提取数据。
现在,当我在我的(接口(supportsNormalization()
函数中var_dump()
这个时,我得到了 3 个单独的对象:
- \Doctrine\Common\Collections\ArrayCollection
- \Symfony\Component\DomCrawler\Crawler
- \圆顶
当然,我只想要我传递的对象。这是某种冒泡吗?
谢谢。
我实际上得到了所有嵌套对象。
这是Symfony的Normalizer的一个功能...当将对象传递给normalize()
函数时,Symfony会递归地调用所有嵌套对象上的normalize()
,直到supportsNormalization()
找到匹配项。
https://github.com/symfony/serializer/blob/master/Normalizer/AbstractObjectNormalizer.php