1<?php 2/* 3 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 4 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 5 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 6 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 7 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 8 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 9 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 10 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 11 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 12 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 13 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 * 15 * This software consists of voluntary contributions made by many individuals 16 * and is licensed under the MIT license. For more information, see 17 * <http://www.doctrine-project.org>. 18 */ 19 20namespace Doctrine\Common\Annotations; 21 22/** 23 * Allows the reader to be used in-place of Doctrine's reader. 24 * 25 * @author Johannes M. Schmitt <schmittjoh@gmail.com> 26 */ 27class IndexedReader implements Reader 28{ 29 /** 30 * @var Reader 31 */ 32 private $delegate; 33 34 /** 35 * Constructor. 36 * 37 * @param Reader $reader 38 */ 39 public function __construct(Reader $reader) 40 { 41 $this->delegate = $reader; 42 } 43 44 /** 45 * {@inheritDoc} 46 */ 47 public function getClassAnnotations(\ReflectionClass $class) 48 { 49 $annotations = array(); 50 foreach ($this->delegate->getClassAnnotations($class) as $annot) { 51 $annotations[get_class($annot)] = $annot; 52 } 53 54 return $annotations; 55 } 56 57 /** 58 * {@inheritDoc} 59 */ 60 public function getClassAnnotation(\ReflectionClass $class, $annotation) 61 { 62 return $this->delegate->getClassAnnotation($class, $annotation); 63 } 64 65 /** 66 * {@inheritDoc} 67 */ 68 public function getMethodAnnotations(\ReflectionMethod $method) 69 { 70 $annotations = array(); 71 foreach ($this->delegate->getMethodAnnotations($method) as $annot) { 72 $annotations[get_class($annot)] = $annot; 73 } 74 75 return $annotations; 76 } 77 78 /** 79 * {@inheritDoc} 80 */ 81 public function getMethodAnnotation(\ReflectionMethod $method, $annotation) 82 { 83 return $this->delegate->getMethodAnnotation($method, $annotation); 84 } 85 86 /** 87 * {@inheritDoc} 88 */ 89 public function getPropertyAnnotations(\ReflectionProperty $property) 90 { 91 $annotations = array(); 92 foreach ($this->delegate->getPropertyAnnotations($property) as $annot) { 93 $annotations[get_class($annot)] = $annot; 94 } 95 96 return $annotations; 97 } 98 99 /** 100 * {@inheritDoc} 101 */ 102 public function getPropertyAnnotation(\ReflectionProperty $property, $annotation) 103 { 104 return $this->delegate->getPropertyAnnotation($property, $annotation); 105 } 106 107 /** 108 * Proxies all methods to the delegate. 109 * 110 * @param string $method 111 * @param array $args 112 * 113 * @return mixed 114 */ 115 public function __call($method, $args) 116 { 117 return call_user_func_array(array($this->delegate, $method), $args); 118 } 119} 120