101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Doctrine\Common\Annotations; | ||
|  | 
 | ||
|  | use ReflectionClass; | ||
|  | use ReflectionMethod; | ||
|  | use ReflectionProperty; | ||
|  | 
 | ||
|  | use function call_user_func_array; | ||
|  | use function get_class; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Allows the reader to be used in-place of Doctrine's reader. | ||
|  |  */ | ||
|  | class IndexedReader implements Reader | ||
|  | { | ||
|  |     /** @var Reader */ | ||
|  |     private $delegate; | ||
|  | 
 | ||
|  |     public function __construct(Reader $reader) | ||
|  |     { | ||
|  |         $this->delegate = $reader; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getClassAnnotations(ReflectionClass $class) | ||
|  |     { | ||
|  |         $annotations = []; | ||
|  |         foreach ($this->delegate->getClassAnnotations($class) as $annot) { | ||
|  |             $annotations[get_class($annot)] = $annot; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $annotations; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getClassAnnotation(ReflectionClass $class, $annotation) | ||
|  |     { | ||
|  |         return $this->delegate->getClassAnnotation($class, $annotation); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getMethodAnnotations(ReflectionMethod $method) | ||
|  |     { | ||
|  |         $annotations = []; | ||
|  |         foreach ($this->delegate->getMethodAnnotations($method) as $annot) { | ||
|  |             $annotations[get_class($annot)] = $annot; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $annotations; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getMethodAnnotation(ReflectionMethod $method, $annotation) | ||
|  |     { | ||
|  |         return $this->delegate->getMethodAnnotation($method, $annotation); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getPropertyAnnotations(ReflectionProperty $property) | ||
|  |     { | ||
|  |         $annotations = []; | ||
|  |         foreach ($this->delegate->getPropertyAnnotations($property) as $annot) { | ||
|  |             $annotations[get_class($annot)] = $annot; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $annotations; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * {@inheritDoc} | ||
|  |      */ | ||
|  |     public function getPropertyAnnotation(ReflectionProperty $property, $annotation) | ||
|  |     { | ||
|  |         return $this->delegate->getPropertyAnnotation($property, $annotation); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Proxies all methods to the delegate. | ||
|  |      * | ||
|  |      * @param string  $method | ||
|  |      * @param mixed[] $args | ||
|  |      * | ||
|  |      * @return mixed | ||
|  |      */ | ||
|  |     public function __call($method, $args) | ||
|  |     { | ||
|  |         return call_user_func_array([$this->delegate, $method], $args); | ||
|  |     } | ||
|  | } |