Server IP : 103.233.192.212 / Your IP : 18.116.235.184 Web Server : Apache/2 System : Linux sv1.inde.co.th 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021 x86_64 User : sumpatuan ( 1058) PHP Version : 5.5.38 Disable Function : symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,putenv,passthru,escapeshellarg,escapeshellcmd,pcntl_exec,proc_get_status,proc_nice,proc_terminate,pclose,ini_alter,virtual,openlog,ini_restore MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/sumpatuan/public_html/backup/framework/caching/dependencies/ |
Upload File : |
<?php /** * CCacheDependency 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/ */ /** * CCacheDependency is the base class for cache dependency classes. * * CCacheDependency implements the {@link ICacheDependency} interface. * Child classes should override its {@link generateDependentData} for * actual dependency checking. * * @property boolean $hasChanged Whether the dependency has changed. * @property mixed $dependentData The data used to determine if dependency has been changed. * This data is available after {@link evaluateDependency} is called. * * @author Qiang Xue <qiang.xue@gmail.com> * @package system.caching.dependencies * @since 1.0 */ class CCacheDependency extends CComponent implements ICacheDependency { /** * @var boolean Whether this dependency is reusable or not. * If set to true, dependent data for this cache dependency will only be generated once per request. * You can then use the same cache dependency for multiple separate cache calls on the same page * without the overhead of re-evaluating the dependency each time. * Defaults to false; * @since 1.1.11 */ public $reuseDependentData=false; /** * @var array cached data for reusable dependencies. * @since 1.1.11 */ private static $_reusableData=array(); private $_hash; private $_data; /** * Evaluates the dependency by generating and saving the data related with dependency. * This method is invoked by cache before writing data into it. */ public function evaluateDependency() { if ($this->reuseDependentData) { $hash=$this->getHash(); if(!isset(self::$_reusableData[$hash]['dependentData'])) self::$_reusableData[$hash]['dependentData']=$this->generateDependentData(); $this->_data=self::$_reusableData[$hash]['dependentData']; } else $this->_data=$this->generateDependentData(); } /** * @return boolean whether the dependency has changed. */ public function getHasChanged() { if ($this->reuseDependentData) { $hash=$this->getHash(); if(!isset(self::$_reusableData[$hash]['dependentData'])) self::$_reusableData[$hash]['dependentData']=$this->generateDependentData(); return self::$_reusableData[$hash]['dependentData']!=$this->_data; } else return $this->generateDependentData()!=$this->_data; } /** * @return mixed the data used to determine if dependency has been changed. * This data is available after {@link evaluateDependency} is called. */ public function getDependentData() { return $this->_data; } /** * Resets cached data for reusable dependencies. * @since 1.1.14 */ public static function resetReusableData() { self::$_reusableData=array(); } /** * Generates the data needed to determine if dependency has been changed. * Derived classes should override this method to generate actual dependent data. * @return mixed the data needed to determine if dependency has been changed. */ protected function generateDependentData() { return null; } /** * Generates a unique hash that identifies this cache dependency. * @return string the hash for this cache dependency */ private function getHash() { if($this->_hash===null) $this->_hash=sha1(serialize($this)); return $this->_hash; } }