PageRenderTime 72ms CodeModel.GetById 30ms app.highlight 2ms RepoModel.GetById 38ms app.codeStats 0ms

/protected/extensions/doctrine/vendors/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php

https://bitbucket.org/NordLabs/yiidoctrine
PHP | 102 lines | 35 code | 9 blank | 58 comment | 1 complexity | 55442c3e28458b88411729d21f73b519 MD5 | raw file
  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
 20namespace Doctrine\Common\Persistence\Mapping;
 21
 22use ReflectionClass;
 23use ReflectionProperty;
 24
 25/**
 26 * PHP Runtime Reflection Service
 27 *
 28 * @author Benjamin Eberlei <kontakt@beberlei.de>
 29 */
 30class RuntimeReflectionService implements ReflectionService
 31{
 32    /**
 33     * Return an array of the parent classes (not interfaces) for the given class.
 34     *
 35     * @param string $class
 36     * @return array
 37     */
 38    public function getParentClasses($class)
 39    {
 40        return class_parents($class);
 41    }
 42
 43    /**
 44     * Return the shortname of a class.
 45     *
 46     * @param string $class
 47     * @return string
 48     */
 49    public function getClassShortName($class)
 50    {
 51        $r = new ReflectionClass($class);
 52        return $r->getShortName();
 53    }
 54
 55    /**
 56     * @param string $class
 57     * @return string
 58     */
 59    public function getClassNamespace($class)
 60    {
 61        $r = new ReflectionClass($class);
 62        return $r->getNamespaceName();
 63    }
 64
 65    /**
 66     * Return a reflection class instance or null
 67     *
 68     * @param string $class
 69     * @return ReflectionClass|null
 70     */
 71    public function getClass($class)
 72    {
 73        return new ReflectionClass($class);
 74    }
 75
 76    /**
 77     * Return an accessible property (setAccessible(true)) or null.
 78     *
 79     * @param string $class
 80     * @param string $property
 81     * @return ReflectionProperty|null
 82     */
 83    public function getAccessibleProperty($class, $property)
 84    {
 85        $property = new ReflectionProperty($class, $property);
 86        $property->setAccessible(true);
 87        return $property;
 88    }
 89
 90    /**
 91     * Check if the class have a public method with the given name.
 92     *
 93     * @param mixed $class
 94     * @param mixed $method
 95     * @return bool
 96     */
 97    public function hasPublicMethod($class, $method)
 98    {
 99        return method_exists($class, $method) && is_callable(array($class, $method));
100    }
101}
102