Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. SerializerDataCollector.php

function SerializerDataCollector::lateCollect

Overrides LateDataCollectorInterface::lateCollect

File

vendor/symfony/serializer/DataCollector/SerializerDataCollector.php, line 177

Class

SerializerDataCollector
@author Mathias Arlaud <mathias.arlaud@gmail.com>

Namespace

Symfony\Component\Serializer\DataCollector

Code

public function lateCollect() : void {
    $this->data = self::DATA_TEMPLATE;
    foreach ($this->collected as $collected) {
        if (!isset($collected['data'])) {
            continue;
        }
        $data = [
            'data' => $this->cloneVar($collected['data']),
            'dataType' => get_debug_type($collected['data']),
            'type' => $collected['type'] ?? null,
            'format' => $collected['format'],
            'time' => $collected['time'],
            'context' => $this->cloneVar($collected['context']),
            'normalization' => [],
            'encoding' => [],
            'caller' => $collected['caller'] ?? null,
            'name' => $collected['name'],
        ];
        if (isset($collected['normalization'])) {
            $mainNormalization = array_pop($collected['normalization']);
            $data['normalizer'] = [
                'time' => $mainNormalization['time'],
            ] + $this->getMethodLocation($mainNormalization['normalizer'], $mainNormalization['method']);
            foreach ($collected['normalization'] as $normalization) {
                if (!isset($data['normalization'][$normalization['normalizer']])) {
                    $data['normalization'][$normalization['normalizer']] = [
                        'time' => 0,
                        'calls' => 0,
                    ] + $this->getMethodLocation($normalization['normalizer'], $normalization['method']);
                }
                ++$data['normalization'][$normalization['normalizer']]['calls'];
                $data['normalization'][$normalization['normalizer']]['time'] += $normalization['time'];
            }
        }
        if (isset($collected['encoding'])) {
            $mainEncoding = array_pop($collected['encoding']);
            $data['encoder'] = [
                'time' => $mainEncoding['time'],
            ] + $this->getMethodLocation($mainEncoding['encoder'], $mainEncoding['method']);
            foreach ($collected['encoding'] as $encoding) {
                if (!isset($data['encoding'][$encoding['encoder']])) {
                    $data['encoding'][$encoding['encoder']] = [
                        'time' => 0,
                        'calls' => 0,
                    ] + $this->getMethodLocation($encoding['encoder'], $encoding['method']);
                }
                ++$data['encoding'][$encoding['encoder']]['calls'];
                $data['encoding'][$encoding['encoder']]['time'] += $encoding['time'];
            }
        }
        $this->data[$collected['method']][] = $data;
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal