Вход Регистрация
Файл: framework/caching/dependencies/CChainedCacheDependency.php
Строк: 188
<?php
/**
 * CChainedCacheDependency class file.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link http://www.yiiframework.com/
 * @copyright 2008-2013 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

/**
 * CChainedCacheDependency represents a list of cache dependencies.
 *
 * If any of the dependencies reports a dependency change, CChainedCacheDependency
 * will return true for the checking.
 *
 * To add dependencies to CChainedCacheDependency, use {@link getDependencies Dependencies}
 * which gives a {@link CTypedList} instance and can be used like an array
 * (see {@link CList} for more details}).
 *
 * @property CTypedList $dependencies List of dependency objects.
 * @property boolean $hasChanged Whether the dependency is changed or not.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @package system.caching.dependencies
 * @since 1.0
 */
class CChainedCacheDependency extends CComponent implements ICacheDependency
{
    private 
$_dependencies=null;

    
/**
     * Constructor.
     * @param array $dependencies the dependencies to be added to this chain.
     * @since 1.1.4
     */
    
public function __construct($dependencies=array())
    {
        if(!empty(
$dependencies))
            
$this->setDependencies($dependencies);
    }

    
/**
     * @return CTypedList list of dependency objects
     */
    
public function getDependencies()
    {
        if(
$this->_dependencies===null)
            
$this->_dependencies=new CTypedList('ICacheDependency');
        return 
$this->_dependencies;
    }

    
/**
     * @param array $values list of dependency objects or configurations to be added to this chain.
     * If a dependency is specified as a configuration, it must be an array that can be recognized
     * by {@link YiiBase::createComponent}.
     */
    
public function setDependencies($values)
    {
        
$dependencies=$this->getDependencies();
        foreach(
$values as $value)
        {
            if(
is_array($value))
                
$value=Yii::createComponent($value);
            
$dependencies->add($value);
        }
    }

    
/**
     * Evaluates the dependency by generating and saving the data related with dependency.
     */
    
public function evaluateDependency()
    {
        if(
$this->_dependencies!==null)
        {
            foreach(
$this->_dependencies as $dependency)
                
$dependency->evaluateDependency();
        }
    }

    
/**
     * Performs the actual dependency checking.
     * This method returns true if any of the dependency objects
     * reports a dependency change.
     * @return boolean whether the dependency is changed or not.
     */
    
public function getHasChanged()
    {
        if(
$this->_dependencies!==null)
        {
            foreach(
$this->_dependencies as $dependency)
                if(
$dependency->getHasChanged())
                    return 
true;
        }
        return 
false;
    }
}
Онлайн: 1
Реклама