system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

CDbCacheDependency

system.caching.dependencies
继承 class CDbCacheDependency » CCacheDependency » CComponent
实现 ICacheDependency
可用自 1.0
源码 framework/caching/dependencies/CDbCacheDependency.php
CDbCacheDependency represents a dependency based on the query result of a SQL statement.

If the query result (a scalar) changes, the dependency is considered as changed. To specify the SQL statement, set sql property. The connectionID property specifies the ID of a CDbConnection application component. It is this DB connection that is used to perform the query.

公共属性

隐藏继承的属性

属性类型描述被定义在
connectionID string the ID of a CDbConnection application component. CDbCacheDependency
dependentData mixed the data used to determine if dependency has been changed. CCacheDependency
hasChanged boolean whether the dependency has changed. CCacheDependency
params array parameters (name=>value) to be bound to the SQL statement specified by sql. CDbCacheDependency
reuseDependentData boolean Whether this dependency is reusable or not. CCacheDependency
sql string the SQL statement whose result is used to determine if the dependency has been changed. CDbCacheDependency

受保护的属性

隐藏继承的属性

属性类型描述被定义在
dbConnection CDbConnection the DB connection instance CDbCacheDependency

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. CComponent
__construct() Constructor. CDbCacheDependency
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__sleep() PHP sleep magic method. CDbCacheDependency
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateDependency() Evaluates the dependency by generating and saving the data related with dependency. CCacheDependency
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
getDependentData() Returns the data used to determine if dependency has been changed. This data is available after evaluateDependency is called. CCacheDependency
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getHasChanged() Returns whether the dependency has changed. CCacheDependency
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent
resetReusableData() Resets cached data for reusable dependencies. CCacheDependency

受保护的方法

隐藏继承的方法

方法描述被定义在
generateDependentData() Generates the data needed to determine if dependency has been changed. CDbCacheDependency
getDbConnection() Returns the DB connection instance CDbCacheDependency

属性详情

connectionID 属性
public string $connectionID;

the ID of a CDbConnection application component. Defaults to 'db'.

dbConnection 属性 只读

the DB connection instance

params 属性 (自版本 v1.1.4 可用)
public array $params;

parameters (name=>value) to be bound to the SQL statement specified by sql.

sql 属性
public string $sql;

the SQL statement whose result is used to determine if the dependency has been changed. Note, the SQL statement should return back a single value.

方法详情

__construct() 方法
public void __construct(string $sql=NULL)
$sql string the SQL statement whose result is used to determine if the dependency has been changed.
源码: framework/caching/dependencies/CDbCacheDependency.php#46 (显示)
public function __construct($sql=null)
{
    
$this->sql=$sql;
}

Constructor.

__sleep() 方法
public array __sleep()
{return} array
源码: framework/caching/dependencies/CDbCacheDependency.php#56 (显示)
public function __sleep()
{
    
$this->_db=null;
    return 
array_keys((array)$this);
}

PHP sleep magic method. This method ensures that the database instance is set null because it contains resource handles.

generateDependentData() 方法
protected mixed generateDependentData()
{return} mixed the data needed to determine if dependency has been changed.
源码: framework/caching/dependencies/CDbCacheDependency.php#68 (显示)
protected function generateDependentData()
{
    if(
$this->sql!==null)
    {
        
$db=$this->getDbConnection();
        
$command=$db->createCommand($this->sql);
        if(
is_array($this->params))
        {
            foreach(
$this->params as $name=>$value)
                
$command->bindValue($name,$value);
        }
        if(
$db->queryCachingDuration>0)
        {
            
// temporarily disable and re-enable query caching
            
$duration=$db->queryCachingDuration;
            
$db->queryCachingDuration=0;
            
$result=$command->queryRow();
            
$db->queryCachingDuration=$duration;
        }
        else
            
$result=$command->queryRow();
        return 
$result;
    }
    else
        throw new 
CException(Yii::t('yii','CDbCacheDependency.sql cannot be empty.'));
}

Generates the data needed to determine if dependency has been changed. This method returns the value of the global state.

getDbConnection() 方法
protected CDbConnection getDbConnection()
{return} CDbConnection the DB connection instance
源码: framework/caching/dependencies/CDbCacheDependency.php#99 (显示)
protected function getDbConnection()
{
    if(
$this->_db!==null)
        return 
$this->_db;
    else
    {
        if((
$this->_db=Yii::app()->getComponent($this->connectionID)) instanceof CDbConnection)
            return 
$this->_db;
        else
            throw new 
CException(Yii::t('yii','CDbCacheDependency.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.',
                array(
'{id}'=>$this->connectionID)));
    }
}