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

Breadcrumb

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

class ClassMetadataFactoryCompiler

@author Fabien Bourigault <bourigaultfabien@gmail.com>

Hierarchy

  • class \Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryCompiler

Expanded class hierarchy of ClassMetadataFactoryCompiler

1 file declares its use of ClassMetadataFactoryCompiler
CompiledClassMetadataCacheWarmer.php in vendor/symfony/serializer/CacheWarmer/CompiledClassMetadataCacheWarmer.php

File

vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactoryCompiler.php, line 20

Namespace

Symfony\Component\Serializer\Mapping\Factory
View source
final class ClassMetadataFactoryCompiler {
    
    /**
     * @param ClassMetadataInterface[] $classMetadatas
     */
    public function compile(array $classMetadatas) : string {
        return <<<EOF
<?php

// This file has been auto-generated by the Symfony Serializer Component.

return [{<span class="php-variable">$this</span>-&gt;<span class="php-function-or-constant function member-of-self">generateDeclaredClassMetadata</span>(<span class="php-variable">$classMetadatas</span>)}
];
EOF;
    }
    
    /**
     * @param ClassMetadataInterface[] $classMetadatas
     */
    private function generateDeclaredClassMetadata(array $classMetadatas) : string {
        $compiled = '';
        foreach ($classMetadatas as $classMetadata) {
            $attributesMetadata = [];
            foreach ($classMetadata->getAttributesMetadata() as $attributeMetadata) {
                $attributesMetadata[$attributeMetadata->getName()] = [
                    $attributeMetadata->getGroups(),
                    $attributeMetadata->getMaxDepth(),
                    $attributeMetadata->getSerializedName(),
                    $attributeMetadata->getSerializedPath(),
                ];
            }
            $classDiscriminatorMapping = $classMetadata->getClassDiscriminatorMapping() ? [
                $classMetadata->getClassDiscriminatorMapping()
                    ->getTypeProperty(),
                $classMetadata->getClassDiscriminatorMapping()
                    ->getTypesMapping(),
            ] : null;
            $compiled .= \sprintf("\n'%s' => %s,", $classMetadata->getName(), VarExporter::export([
                $attributesMetadata,
                $classDiscriminatorMapping,
            ]));
        }
        return $compiled;
    }

}

Members

Title Sort descending Modifiers Object type Summary
ClassMetadataFactoryCompiler::compile public function
ClassMetadataFactoryCompiler::generateDeclaredClassMetadata private function
RSS feed
Powered by Drupal