* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Mapping\Factory; use Doctrine\Common\Cache\Cache; use Symfony\Component\Serializer\Exception\InvalidArgumentException; use Symfony\Component\Serializer\Mapping\ClassMetadata; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; /** * Returns a {@link ClassMetadata}. * * @author Kévin Dunglas */ class ClassMetadataFactory implements ClassMetadataFactoryInterface { use ClassResolverTrait; private $loader; private $cache; private $loadedClasses; public function __construct(LoaderInterface $loader, Cache $cache = null) { $this->loader = $loader; $this->cache = $cache; if (null !== $cache) { @trigger_error(sprintf('Passing a Doctrine Cache instance as 2nd parameter of the "%s" constructor is deprecated since Symfony 3.1. This parameter will be removed in Symfony 4.0. Use the "%s" class instead.', __CLASS__, CacheClassMetadataFactory::class), E_USER_DEPRECATED); } } /** * {@inheritdoc} */ public function getMetadataFor($value) { $class = $this->getClass($value); if (isset($this->loadedClasses[$class])) { return $this->loadedClasses[$class]; } if ($this->cache && ($this->loadedClasses[$class] = $this->cache->fetch($class))) { return $this->loadedClasses[$class]; } $classMetadata = new ClassMetadata($class); $this->loader->loadClassMetadata($classMetadata); $reflectionClass = $classMetadata->getReflectionClass(); // Include metadata from the parent class if ($parent = $reflectionClass->getParentClass()) { $classMetadata->merge($this->getMetadataFor($parent->name)); } // Include metadata from all implemented interfaces foreach ($reflectionClass->getInterfaces() as $interface) { $classMetadata->merge($this->getMetadataFor($interface->name)); } if ($this->cache) { $this->cache->save($class, $classMetadata); } return $this->loadedClasses[$class] = $classMetadata; } /** * {@inheritdoc} */ public function hasMetadataFor($value) { try { $this->getClass($value); return true; } catch (InvalidArgumentException $invalidArgumentException) { // Return false in case of exception } return false; } } __halt_compiler();----SIGNATURE:----fX8WF7VyQYG1m+o9J/izzn+AGi1lwYakDwQl/XH3wZ3+luzSU9n2K5uNZR0u1pFxrlHeRhkPLZpSsyMMdGmicu6wTP1wpctN8bXf/fiCufX8R4obzrAx7jt/rVq/C1KeFBRaWo5OZcrlLoXlU4acONBXCsZACMXVuFYi15qM2UqHMwAKr3KkLQIlHTAvOvzifdzxIVGg2hTitHC4tsMtNOioNp0RKitfp6DOI/Odw+dT20wnGDwfBYaw7s3GbERlazHb893G9yvqGiUA975WlR0AEAHoLnUBh/haeYaakq8vH3Z3d5Xn1LUgqPbe3rdTxMHg+Fn2xDQOA0DD8pDYyg69UCXccwWu85zsstr1cf5ZPd1q3C8GMMFiCvTwFeUBmWAFGLs4hs7DAt8iGhpVHXNTgB/sLmlinMVAL0+9T1RSKf0qMKicjLzXAPgfMUYdfZS2EY+IpbHj7R2i5KQ4GmCxflmMUhxW550ql/WuIAvVclZzA5TUxH3W0bARSCVtMrXyMexeQA9bqwSC5MUCfFJGRvzU1ER7XcHBpmWPNqVgE0eNdEmr4KIhcZe13VlSJ3gZdskGCKLuGGGmaWm4UAU+KWtPWx1n9ThrsLB0jrvaOuABVlR1xazPvCeLyZpmnzHIbUmSEDnyysMCX9879N1G4N/vChgpMjfVoteQ6yc=----ATTACHMENT:----NTM2MTE5MTc0NjA4ODI1OCAxNDEwMTI4ODU1MzkxNjY2IDY4MTU4NDUyMzM4MjE5Mzk=