Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/AR/lib/Reflections.php
Строк: 76
<?php
/**
 * @package ActiveRecord
 */
namespace ActiveRecord;
use 
ReflectionClass;

/**
 * Simple class that caches reflections of classes.
 *
 * @package ActiveRecord
 */
class Reflections extends Singleton
{
    
/**
     * Current reflections.
     *
     * @var array
     */
    
private $reflections = array();

    
/**
     * Instantiates a new ReflectionClass for the given class.
     *
     * @param string $class Name of a class
     * @return Reflections $this so you can chain calls like Reflections::instance()->add('class')->get()
     */
    
public function add($class=null)
    {
        
$class $this->get_class($class);

        if (!isset(
$this->reflections[$class]))
            
$this->reflections[$class] = new ReflectionClass($class);
            
        return 
$this;
    }

    
/**
     * Destroys the cached ReflectionClass.
     *
     * Put this here mainly for testing purposes.
     * 
     * @param string $class Name of a class.
     * @return void
     */
    
public function destroy($class)
    {
        if (isset(
$this->reflections[$class]))
            
$this->reflections[$class] = null;
    }
    
    
/**
     * Get a cached ReflectionClass.
     *
     * @param string $class Optional name of a class
     * @return mixed null or a ReflectionClass instance
     * @throws ActiveRecordException if class was not found
     */
    
public function get($class=null)
    {
        
$class $this->get_class($class);

        if (isset(
$this->reflections[$class]))
            return 
$this->reflections[$class];

        throw new 
ActiveRecordException("Class not found: $class");
    }

    
/**
     * Retrieve a class name to be reflected.
     *
     * @param mixed $mixed An object or name of a class
     * @return string
     */
    
private function get_class($mixed=null)
    {
        if (
is_object($mixed))
            return 
get_class($mixed);

        if (!
is_null($mixed))
            return 
$mixed;

        return 
$this->get_called_class();
    }
}
?>
Онлайн: 0
Реклама