*/
class ClassMetadataFactory implements ClassMetadataFactoryInterface
{
+ use ClassResolverTrait;
+
/**
* @var LoaderInterface
*/
{
$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 version 3.1. This parameter will be removed in Symfony 4.0. Use the "%s" class instead.', __CLASS__, CacheClassMetadataFactory::class), E_USER_DEPRECATED);
+ }
}
/**
public function getMetadataFor($value)
{
$class = $this->getClass($value);
- if (!$class) {
- throw new InvalidArgumentException(sprintf('Cannot create metadata for non-objects. Got: "%s"', gettype($value)));
- }
if (isset($this->loadedClasses[$class])) {
return $this->loadedClasses[$class];
return $this->loadedClasses[$class];
}
- if (!class_exists($class) && !interface_exists($class)) {
- throw new InvalidArgumentException(sprintf('The class or interface "%s" does not exist.', $class));
- }
-
$classMetadata = new ClassMetadata($class);
$this->loader->loadClassMetadata($classMetadata);
*/
public function hasMetadataFor($value)
{
- $class = $this->getClass($value);
-
- return class_exists($class) || interface_exists($class);
- }
+ try {
+ $this->getClass($value);
- /**
- * Gets a class name for a given class or instance.
- *
- * @param mixed $value
- *
- * @return string|bool
- */
- private function getClass($value)
- {
- if (!is_object($value) && !is_string($value)) {
- return false;
+ return true;
+ } catch (InvalidArgumentException $invalidArgumentException) {
+ // Return false in case of exception
}
- return ltrim(is_object($value) ? get_class($value) : $value, '\\');
+ return false;
}
}