summaryrefslogtreecommitdiff
path: root/framework/caching/dependencies/CChainedCacheDependency.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/caching/dependencies/CChainedCacheDependency.php')
-rw-r--r--framework/caching/dependencies/CChainedCacheDependency.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/framework/caching/dependencies/CChainedCacheDependency.php b/framework/caching/dependencies/CChainedCacheDependency.php
new file mode 100644
index 0000000..a7b985f
--- /dev/null
+++ b/framework/caching/dependencies/CChainedCacheDependency.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * CChainedCacheDependency class file.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @link http://www.yiiframework.com/
+ * @copyright Copyright &copy; 2008-2011 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>
+ * @version $Id: CChainedCacheDependency.php 3515 2011-12-28 12:29:24Z mdomba $
+ * @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 depedency 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;
+ }
+}