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.
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 |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__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
属性
只读
protected CDbConnection getDbConnection()
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)));
}
}