dateTimeHandler = $dateHandler; } /** * {@inheritdoc} */ public static function getSubscribingMethods() { $methods = []; $formats = ['json', 'xml', 'yml']; $collectionTypes = [ 'Carbon', Carbon::class, ]; foreach ($collectionTypes as $type) { foreach ($formats as $format) { $methods[] = [ 'direction' => GraphNavigatorInterface::DIRECTION_SERIALIZATION, 'type' => $type, 'format' => $format, 'method' => 'serialize', ]; $methods[] = [ 'direction' => GraphNavigatorInterface::DIRECTION_DESERIALIZATION, 'type' => $type, 'format' => $format, 'method' => 'deserialize', ]; } } return $methods; } /** * @return array|\ArrayObject */ public function serialize( SerializationVisitorInterface $visitor, Carbon $date, array $type, SerializationContext $context ) { return $this->dateTimeHandler->serializeDateTime($visitor, $date->tz('Europe/Warsaw'), $type, $context); } /** * @param mixed $data */ public function deserialize( DeserializationVisitorInterface $visitor, $data, array $type, DeserializationContext $context ): Collection { return new Collection($visitor->visitArray($data, $type)); } }