CDbCacheDependency
优质
小牛编辑
133浏览
2023-12-01
所有包 | 属性 | 方法
CDbCacheDependency指基于SQL语句查询结果的依赖项。
若查询结果(一个量)改变了,则认为该依赖项改变。 设置sql属性以指定SQL语句。 connectionID属性指定了CDbConnection应用组件的ID。 它是用来执行查询的数据库连接。
源码: framework/caching/dependencies/CDbCacheDependency.php#47 (显示)
源码: framework/caching/dependencies/CDbCacheDependency.php#57 (显示)
源码: framework/caching/dependencies/CDbCacheDependency.php#68 (显示)
源码: framework/caching/dependencies/CDbCacheDependency.php#99 (显示)
包 | system.caching.dependencies |
---|---|
继承 | class CDbCacheDependency » CCacheDependency » CComponent |
实现 | ICacheDependency |
源自 | 1.0 |
版本 | $Id: CDbCacheDependency.php 3204 2011-05-05 21:36:32Z alexander.makarow $ |
源码 | framework/caching/dependencies/CDbCacheDependency.php |
若查询结果(一个量)改变了,则认为该依赖项改变。 设置sql属性以指定SQL语句。 connectionID属性指定了CDbConnection应用组件的ID。 它是用来执行查询的数据库连接。
公共属性
隐藏继承属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
connectionID | string | CDbConnection应用组件的ID。默认是‘db’。 | CDbCacheDependency |
dependentData | mixed | 用以决定依赖项是否被改变的数据。 这些数据是可用的在evaluateDependency被调用后。 | CCacheDependency |
hasChanged | boolean | 依赖项是否被改变。 | CCacheDependency |
params | array | 绑定到sql指定的SQL语句的参数(名=>值)。 | CDbCacheDependency |
sql | string | SQL语句,它的查询结果用来决定依赖项是否被改变。 注意,该SQL语句应该返回一个单一的值。 | CDbCacheDependency |
受保护属性
隐藏继承属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
dbConnection | CDbConnection | 数据库连接实例。 | CDbCacheDependency |
公共方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | 构造器。 | CDbCacheDependency |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__sleep() | PHP的魔术方法sleep。 | CDbCacheDependency |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaluateDependency() | 根据依赖关系来生存和保存数据以计算依赖项。 | CCacheDependency |
evaluateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getDependentData() | 返回用以决定依赖项是否被改变的数据。 这些数据是可用的在evaluateDependency被调用后。 | CCacheDependency |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getHasChanged() | 返回依赖项是否被改变。 | CCacheDependency |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
受保护方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
generateDependentData() | 生成决定依赖项是否被改变需要的数据。 | CDbCacheDependency |
getDbConnection() | 返回数据库连接实例。 | CDbCacheDependency |
属性详细
connectionID 属性 public string $connectionID;CDbConnection应用组件的ID。默认是‘db’。
dbConnection 属性 只读 protected CDbConnection getDbConnection()数据库连接实例。
params 属性 (可用自 v1.1.4) public array $params;绑定到sql指定的SQL语句的参数(名=>值)。
sql 属性 public string $sql;SQL语句,它的查询结果用来决定依赖项是否被改变。 注意,该SQL语句应该返回一个单一的值。
方法详细
__construct() 方法public void __construct(string $sql=NULL) | ||
$sql | string | SQL语句,它的查询结果用来决定依赖项是否被改变。 |
publicfunction__construct($sql=null)
{
$this->sql=$sql;
}
构造器。
__sleep() 方法public array __sleep() | ||
{return} | array |
publicfunction__sleep()
{
$this->_db=null;
returnarray_keys((array)$this);
}
PHP的魔术方法sleep。 该方法保证数据库实例是null,因为它包含了资源句柄。
generateDependentData() 方法protected mixed generateDependentData() | ||
{return} | mixed | 决定依赖项是否被改变需要的数据。 |
protectedfunctiongenerateDependentData()
{
if($this->sql!==null)
{
$db=$this->getDbConnection();
$command=$db->createCommand($this->sql);
if(is_array($this->params))
{
foreach($this->paramsas$name=>$value)
$command->bindValue($name,$value);
}
if($db->queryCachingDuration>0)
{
//temporarilydisableandre-enablequerycaching
$duration=$db->queryCachingDuration;
$db->queryCachingDuration=0;
$result=$command->queryRow();
$db->queryCachingDuration=$duration;
}
else
$result=$command->queryRow();
return$result;
}
else
thrownewCException(Yii::t('yii','CDbCacheDependency.sqlcannotbeempty.'));
}
生成决定依赖项是否被改变需要的数据。 该方法返回全局状态的值。
getDbConnection() 方法protected CDbConnection getDbConnection() | ||
{return} | CDbConnection | 数据库连接实例。 |
protectedfunctiongetDbConnection()
{
if($this->_db!==null)
return$this->_db;
else
{
if(($this->_db=Yii::app()->getComponent($this->connectionID))instanceofCDbConnection)
return$this->_db;
else
thrownewCException(Yii::t('yii','CDbCacheDependency.connectionID"{id}"isinvalid.PleasemakesureitreferstotheIDofaCDbConnectionapplicationcomponent.',
array('{id}'=>$this->connectionID)));
}
}