<?php namespace JMS\Serializer; use JMS\Serializer\Metadata\ClassMetadata; use JMS\Serializer\Metadata\PropertyMetadata; /** * Interface for visitors. * * This contains the minimal set of values that must be supported for any * output format. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> */ interface VisitorInterface { /** * Allows visitors to convert the input data to a different representation * before the actual serialization/deserialization process starts. * * @param mixed $data * * @return mixed */ public function prepare($data); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitNull($data, array $type, Context $context); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitString($data, array $type, Context $context); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitBoolean($data, array $type, Context $context); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitDouble($data, array $type, Context $context); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitInteger($data, array $type, Context $context); /** * @param mixed $data * @param array $type * * @return mixed */ public function visitArray($data, array $type, Context $context); /** * Called before the properties of the object are being visited. * * @param ClassMetadata $metadata * @param mixed $data * @param array $type * * @return void */ public function startVisitingObject(ClassMetadata $metadata, $data, array $type, Context $context); /** * @param PropertyMetadata $metadata * @param mixed $data * * @return void */ public function visitProperty(PropertyMetadata $metadata, $data, Context $context); /** * Called after all properties of the object have been visited. * * @param ClassMetadata $metadata * @param mixed $data * @param array $type * * @return mixed */ public function endVisitingObject(ClassMetadata $metadata, $data, array $type, Context $context); /** * Called before serialization/deserialization starts. * * @param GraphNavigator $navigator * * @return void */ public function setNavigator(GraphNavigator $navigator); /** * @deprecated use Context::getNavigator/Context::accept instead * @return GraphNavigator */ public function getNavigator(); /** * @return object|array|scalar */ public function getResult(); }