public function getClassMetadata($class) { $class = ltrim($class, '\\'); if (!isset($this->loadedClasses[$class])) { if ($this->cache !== null && $this->cache->has($class)) { $this->loadedClasses[$class] = $this->cache->read($class); } else { $metadata = new ClassMetadata($class); // Include constraints from the parent class if ($parent = $metadata->getReflectionClass()->getParentClass()) { $metadata->mergeConstraints($this->getClassMetadata($parent->getName())); } // Include constraints from all implemented interfaces foreach ($metadata->getReflectionClass()->getInterfaces() as $interface) { $metadata->mergeConstraints($this->getClassMetadata($interface->getName())); } $this->loader->loadClassMetadata($metadata); $this->loadedClasses[$class] = $metadata; if ($this->cache !== null) { $this->cache->write($metadata); } } } return $this->loadedClasses[$class]; }
public function testHas() { $meta = $this->getMockBuilder(ClassMetadata::class)->disableOriginalConstructor()->setMethods(array('getClassName'))->getMock(); $meta->expects($this->once())->method('getClassName')->will($this->returnValue('Foo\\Bar')); $this->assertFalse($this->cache->has('Foo\\Bar'), 'has() returns false when there is no entry'); $this->cache->write($meta); $this->assertTrue($this->cache->has('Foo\\Bar'), 'has() returns true when the is an entry'); }