76 lines
4.1 KiB
YAML
76 lines
4.1 KiB
YAML
name: TraceableEncoder
|
|
class_comment: '# * Collects some data about encoding.
|
|
|
|
# *
|
|
|
|
# * @author Mathias Arlaud <mathias.arlaud@gmail.com>
|
|
|
|
# *
|
|
|
|
# * @internal'
|
|
dependencies:
|
|
- name: SerializerDataCollector
|
|
type: class
|
|
source: Symfony\Component\Serializer\DataCollector\SerializerDataCollector
|
|
- name: DecoderInterface
|
|
type: class
|
|
source: Symfony\Component\Serializer\Encoder\DecoderInterface
|
|
- name: EncoderInterface
|
|
type: class
|
|
source: Symfony\Component\Serializer\Encoder\EncoderInterface
|
|
- name: NormalizationAwareInterface
|
|
type: class
|
|
source: Symfony\Component\Serializer\Encoder\NormalizationAwareInterface
|
|
- name: SerializerAwareInterface
|
|
type: class
|
|
source: Symfony\Component\Serializer\SerializerAwareInterface
|
|
- name: SerializerInterface
|
|
type: class
|
|
source: Symfony\Component\Serializer\SerializerInterface
|
|
properties: []
|
|
methods:
|
|
- name: __call
|
|
visibility: public
|
|
parameters:
|
|
- name: method
|
|
- name: arguments
|
|
comment: "# * Collects some data about encoding.\n# *\n# * @author Mathias Arlaud\
|
|
\ <mathias.arlaud@gmail.com>\n# *\n# * @internal\n# */\n# class TraceableEncoder\
|
|
\ implements EncoderInterface, DecoderInterface, SerializerAwareInterface\n# {\n\
|
|
# public function __construct(\n# private EncoderInterface|DecoderInterface $encoder,\n\
|
|
# private SerializerDataCollector $dataCollector,\n# ) {\n# }\n# \n# public function\
|
|
\ encode(mixed $data, string $format, array $context = []): string\n# {\n# if\
|
|
\ (!$this->encoder instanceof EncoderInterface) {\n# throw new \\BadMethodCallException(\\\
|
|
sprintf('The \"%s()\" method cannot be called as nested encoder doesn\\'t implements\
|
|
\ \"%s\".', __METHOD__, EncoderInterface::class));\n# }\n# \n# $startTime = microtime(true);\n\
|
|
# $encoded = $this->encoder->encode($data, $format, $context);\n# $time = microtime(true)\
|
|
\ - $startTime;\n# \n# if ($traceId = ($context[TraceableSerializer::DEBUG_TRACE_ID]\
|
|
\ ?? null)) {\n# $this->dataCollector->collectEncoding($traceId, $this->encoder::class,\
|
|
\ $time);\n# }\n# \n# return $encoded;\n# }\n# \n# public function supportsEncoding(string\
|
|
\ $format, array $context = []): bool\n# {\n# if (!$this->encoder instanceof EncoderInterface)\
|
|
\ {\n# return false;\n# }\n# \n# return $this->encoder->supportsEncoding($format,\
|
|
\ $context);\n# }\n# \n# public function decode(string $data, string $format,\
|
|
\ array $context = []): mixed\n# {\n# if (!$this->encoder instanceof DecoderInterface)\
|
|
\ {\n# throw new \\BadMethodCallException(\\sprintf('The \"%s()\" method cannot\
|
|
\ be called as nested encoder doesn\\'t implements \"%s\".', __METHOD__, DecoderInterface::class));\n\
|
|
# }\n# \n# $startTime = microtime(true);\n# $encoded = $this->encoder->decode($data,\
|
|
\ $format, $context);\n# $time = microtime(true) - $startTime;\n# \n# if ($traceId\
|
|
\ = ($context[TraceableSerializer::DEBUG_TRACE_ID] ?? null)) {\n# $this->dataCollector->collectDecoding($traceId,\
|
|
\ $this->encoder::class, $time);\n# }\n# \n# return $encoded;\n# }\n# \n# public\
|
|
\ function supportsDecoding(string $format, array $context = []): bool\n# {\n\
|
|
# if (!$this->encoder instanceof DecoderInterface) {\n# return false;\n# }\n#\
|
|
\ \n# return $this->encoder->supportsDecoding($format, $context);\n# }\n# \n#\
|
|
\ public function setSerializer(SerializerInterface $serializer): void\n# {\n\
|
|
# if (!$this->encoder instanceof SerializerAwareInterface) {\n# return;\n# }\n\
|
|
# \n# $this->encoder->setSerializer($serializer);\n# }\n# \n# public function\
|
|
\ needsNormalization(): bool\n# {\n# return !$this->encoder instanceof NormalizationAwareInterface;\n\
|
|
# }\n# \n# /**\n# * Proxies all method calls to the original encoder."
|
|
traits:
|
|
- Symfony\Component\Serializer\DataCollector\SerializerDataCollector
|
|
- Symfony\Component\Serializer\Encoder\DecoderInterface
|
|
- Symfony\Component\Serializer\Encoder\EncoderInterface
|
|
- Symfony\Component\Serializer\Encoder\NormalizationAwareInterface
|
|
- Symfony\Component\Serializer\SerializerAwareInterface
|
|
- Symfony\Component\Serializer\SerializerInterface
|
|
interfaces:
|
|
- EncoderInterface
|