您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

UserNormalizer.php 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace PhpBenchmarksSymfony\RestApiBundle\Normalizer;
  3. use PhpBenchmarksRestData\User;
  4. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  5. use Symfony\Component\Serializer\SerializerAwareInterface;
  6. use Symfony\Component\Serializer\SerializerInterface;
  7. use Symfony\Component\Translation\TranslatorInterface;
  8. class UserNormalizer implements NormalizerInterface, SerializerAwareInterface
  9. {
  10. /** @var SerializerInterface */
  11. protected $serializer;
  12. /** @var TranslatorInterface */
  13. protected $translator;
  14. public function __construct(TranslatorInterface $translator)
  15. {
  16. $this->translator = $translator;
  17. }
  18. /** @param SerializerInterface $serializer */
  19. public function setSerializer(SerializerInterface $serializer)
  20. {
  21. $this->serializer = $serializer;
  22. }
  23. /**
  24. * @param mixed $data
  25. * @param ?string $format
  26. * @return bool
  27. */
  28. public function supportsNormalization($data, $format = null)
  29. {
  30. return $data instanceof User;
  31. }
  32. /**
  33. * @param User $object
  34. * @param ?string $format
  35. * @param array $context
  36. * @return array
  37. */
  38. public function normalize($object, $format = null, array $context = [])
  39. {
  40. return [
  41. 'id' => $object->getId(),
  42. 'login' => $object->getLogin(),
  43. 'createdAt' => $object->getCreatedAt()->format('Y-m-d H:i:s'),
  44. 'translated' => $this->translator->trans('translated.1000', [], 'phpbenchmarks'),
  45. 'comments' => $this->serializer->normalize($object->getComments(), $format, $context)
  46. ];
  47. }
  48. }