for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Chubbyphp\Serialization\Normalizer;
use Chubbyphp\Serialization\Accessor\AccessorInterface;
use Chubbyphp\Serialization\SerializerLogicException;
final class CollectionFieldNormalizer implements FieldNormalizerInterface
{
/**
* @var string
*/
private $class;
* @var AccessorInterface
private $accessor;
* @param string $class
* @param AccessorInterface $accessor
public function __construct(string $class, AccessorInterface $accessor)
$this->class = $class;
$this->accessor = $accessor;
}
* @param string $path
* @param object $object
* @param NormalizerContextInterface $context
* @param NormalizerInterface|null $normalizer
*
* @return mixed
* @throws SerializerLogicException
public function normalizeField(
string $path,
$object,
NormalizerContextInterface $context,
NormalizerInterface $normalizer = null
) {
if (null === $normalizer) {
throw SerializerLogicException::createMissingNormalizer($path);
$data = [];
foreach ($this->accessor->getValue($object) as $i => $childObject) {
$subPath = $path.'['.$i.']';
$data[$i] = $normalizer->normalize($childObject, $context, $subPath);
return $data;