vendor/doctrine-common/lib/Doctrine/Common/Annotations/IndexedReader.php
changeset 0 7f95f8617b0b
equal deleted inserted replaced
-1:000000000000 0:7f95f8617b0b
       
     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 LGPL. For more information, see
       
    17  * <http://www.doctrine-project.org>.
       
    18  */
       
    19 
       
    20 namespace Doctrine\Common\Annotations;
       
    21 
       
    22 use Doctrine\Common\Annotations\Reader;
       
    23 
       
    24 /**
       
    25  * Allows the reader to be used in-place of Doctrine's reader.
       
    26  *
       
    27  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
       
    28  */
       
    29 class IndexedReader implements Reader
       
    30 {
       
    31     private $delegate;
       
    32 
       
    33     public function __construct(Reader $reader)
       
    34     {
       
    35         $this->delegate = $reader;
       
    36     }
       
    37 
       
    38     public function getClassAnnotations(\ReflectionClass $class)
       
    39     {
       
    40         $annotations = array();
       
    41         foreach ($this->delegate->getClassAnnotations($class) as $annot) {
       
    42             $annotations[get_class($annot)] = $annot;
       
    43         }
       
    44 
       
    45         return $annotations;
       
    46     }
       
    47 
       
    48     public function getClassAnnotation(\ReflectionClass $class, $annotation)
       
    49     {
       
    50         return $this->delegate->getClassAnnotation($class, $annotation);
       
    51     }
       
    52 
       
    53     public function getMethodAnnotations(\ReflectionMethod $method)
       
    54     {
       
    55         $annotations = array();
       
    56         foreach ($this->delegate->getMethodAnnotations($method) as $annot) {
       
    57             $annotations[get_class($annot)] = $annot;
       
    58         }
       
    59 
       
    60         return $annotations;
       
    61     }
       
    62 
       
    63     public function getMethodAnnotation(\ReflectionMethod $method, $annotation)
       
    64     {
       
    65         return $this->delegate->getMethodAnnotation($method, $annotation);
       
    66     }
       
    67 
       
    68     public function getPropertyAnnotations(\ReflectionProperty $property)
       
    69     {
       
    70         $annotations = array();
       
    71         foreach ($this->delegate->getPropertyAnnotations($property) as $annot) {
       
    72             $annotations[get_class($annot)] = $annot;
       
    73         }
       
    74 
       
    75         return $annotations;
       
    76     }
       
    77 
       
    78     public function getPropertyAnnotation(\ReflectionProperty $property, $annotation)
       
    79     {
       
    80         return $this->delegate->getPropertyAnnotation($property, $annotation);
       
    81     }
       
    82     
       
    83     /**
       
    84      * Proxy all methods to the delegate.
       
    85      * 
       
    86      * @param type $method
       
    87      * @param type $args
       
    88      * @return type 
       
    89      */
       
    90     public function __call($method, $args)
       
    91     {
       
    92         return call_user_func_array(array($this->delegate, $method), $args);
       
    93     }
       
    94 }