0 follower

CDbCacheDependency

Package system.caching.dependencies
Inheritance class CDbCacheDependency » CCacheDependency » CComponent
Implements ICacheDependency
Since 1.0
Source Code 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.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
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

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
dbConnection CDbConnection the DB connection instance CDbCacheDependency

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__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

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
generateDependentData() Generates the data needed to determine if dependency has been changed. CDbCacheDependency
getDbConnection() Returns the DB connection instance CDbCacheDependency

Property Details

connectionID property
public string $connectionID;

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

dbConnection property read-only

the DB connection instance

params property (available since v1.1.4)
public array $params;

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

sql property
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.

Method Details

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

Constructor.

__sleep() method
public array __sleep()
{return} array
Source Code: framework/caching/dependencies/CDbCacheDependency.php#56 (show)
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() method
protected mixed generateDependentData()
{return} mixed the data needed to determine if dependency has been changed.
Source Code: framework/caching/dependencies/CDbCacheDependency.php#68 (show)
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() method
protected CDbConnection getDbConnection()
{return} CDbConnection the DB connection instance
Source Code: framework/caching/dependencies/CDbCacheDependency.php#99 (show)
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)));
    }
}