You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							2.4 KiB
						
					
					
				| <?php | |
| /** | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright (c) 2008 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\caching; | |
|  | |
| /** | |
|  * ChainedDependency represents a dependency which is composed of a list of other dependencies. | |
|  * | |
|  * When [[dependOnAll]] is true, if any of the dependencies has changed, this dependency is | |
|  * considered changed; When [[dependOnAll]] is false, if one of the dependencies has NOT changed, | |
|  * this dependency is considered NOT changed. | |
|  * | |
|  * @author Qiang Xue <qiang.xue@gmail.com> | |
|  * @since 2.0 | |
|  */ | |
| class ChainedDependency extends Dependency | |
| { | |
| 	/** | |
| 	 * @var Dependency[] list of dependencies that this dependency is composed of. | |
| 	 * Each array element must be a dependency object. | |
| 	 */ | |
| 	public $dependencies = []; | |
| 	/** | |
| 	 * @var boolean whether this dependency is depending on every dependency in [[dependencies]]. | |
| 	 * Defaults to true, meaning if any of the dependencies has changed, this dependency is considered changed. | |
| 	 * When it is set false, it means if one of the dependencies has NOT changed, this dependency | |
| 	 * is considered NOT changed. | |
| 	 */ | |
| 	public $dependOnAll = true; | |
|  | |
| 	/** | |
| 	 * Evaluates the dependency by generating and saving the data related with dependency. | |
| 	 * @param Cache $cache the cache component that is currently evaluating this dependency | |
| 	 */ | |
| 	public function evaluateDependency($cache) | |
| 	{ | |
| 		foreach ($this->dependencies as $dependency) { | |
| 			$dependency->evaluateDependency($cache); | |
| 		} | |
| 	} | |
|  | |
| 	/** | |
| 	 * Generates the data needed to determine if dependency has been changed. | |
| 	 * This method does nothing in this class. | |
| 	 * @param Cache $cache the cache component that is currently evaluating this dependency | |
| 	 * @return mixed the data needed to determine if dependency has been changed. | |
| 	 */ | |
| 	protected function generateDependencyData($cache) | |
| 	{ | |
| 		return null; | |
| 	} | |
|  | |
| 	/** | |
| 	 * Performs the actual dependency checking. | |
| 	 * This method returns true if any of the dependency objects | |
| 	 * reports a dependency change. | |
| 	 * @param Cache $cache the cache component that is currently evaluating this dependency | |
| 	 * @return boolean whether the dependency is changed or not. | |
| 	 */ | |
| 	public function getHasChanged($cache) | |
| 	{ | |
| 		foreach ($this->dependencies as $dependency) { | |
| 			if ($this->dependOnAll && $dependency->getHasChanged($cache)) { | |
| 				return true; | |
| 			} elseif (!$this->dependOnAll && !$dependency->getHasChanged($cache)) { | |
| 				return false; | |
| 			} | |
| 		} | |
| 		return !$this->dependOnAll; | |
| 	} | |
| }
 | |
| 
 |