| Package | system.caching.dependencies | 
|---|---|
| Inheritance | class CDbCacheDependency » CCacheDependency » CComponent | 
| Implements | ICacheDependency | 
| Since | 1.0 | 
| Source Code | framework/caching/dependencies/CDbCacheDependency.php | 
| Property | Type | Description | Defined 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 | 
| Property | Type | Description | Defined By | 
|---|---|---|---|
| dbConnection | CDbConnection | the DB connection instance | CDbCacheDependency | 
| Method | Description | Defined 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 | 
| Method | Description | Defined By | 
|---|---|---|
| generateDependentData() | Generates the data needed to determine if dependency has been changed. | CDbCacheDependency | 
| getDbConnection() | Returns the DB connection instance | CDbCacheDependency | 
the ID of a CDbConnection application component. Defaults to 'db'.
the DB connection instance
parameters (name=>value) to be bound to the SQL statement specified by 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.
| 
 
public void __construct(string $sql=NULL) 
 | ||
| $sql | string | the SQL statement whose result is used to determine if the dependency has been changed. | 
public function __construct($sql=null)
{
    $this->sql=$sql;
}
Constructor.
| 
 
public array __sleep() 
 | ||
| {return} | array | |
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.
| 
 
protected mixed generateDependentData() 
 | ||
| {return} | mixed | the data needed to determine if dependency has been changed. | 
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.
| 
 
protected CDbConnection getDbConnection() 
 | ||
| {return} | CDbConnection | the DB connection instance | 
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)));
    }
}
Signup or Login in order to comment.