コード例 #1
0
 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];
 }
コード例 #2
0
 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');
 }