CDbCacheDependency
| Пакет | system.caching.dependencies |
|---|---|
| Наследование | класс CDbCacheDependency » CCacheDependency » CComponent |
| Реализует | ICacheDependency |
| С версии | 1.0 |
| Исходный код | framework/caching/dependencies/CDbCacheDependency.php |
Если результат запроса (скалярное значение) изменится, зависимость считается изменённой. Для указания SQL-запроса установите свойство sql. Свойство connectionID указывает идентификатор компонента приложения CDbConnection. Именно эта база данных используется для выполнения запроса.
Общедоступные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| connectionID | строка | идентификатор компонента приложения CDbConnection. По умолчанию 'db'. | CDbCacheDependency |
| dependentData | смешанный | данные, используемые для определения изменения зависимости. | CCacheDependency |
| hasChanged | булево | была ли изменена зависимость. | CCacheDependency |
| params | массив | параметры (имя=>значение), которые должны быть привязаны к SQL-запросу, указанному в свойстве sql. | CDbCacheDependency |
| reuseDependentData | булево | Может ли эта зависимость быть повторно использована. | CCacheDependency |
| sql | строка | SQL-запрос, результат которого используется для определения изменения зависимости. | CDbCacheDependency |
Защищенные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| dbConnection | CDbConnection | экземпляр соединения с базой данных | CDbCacheDependency |
Общедоступные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CDbCacheDependency |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | 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 |
| resetReusableData() | Сбрасывает кэшированные данные для зависимостей, которые можно повторно использовать. | CCacheDependency |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| generateDependentData() | Генерирует данные, необходимые для определения изменения зависимости. | CDbCacheDependency |
| getDbConnection() | Возвращает экземпляр соединения с базой данных | CDbCacheDependency |
Подробное описание свойств
connectionID свойство
public string $connectionID;
идентификатор компонента приложения CDbConnection. По умолчанию 'db'.
dbConnection свойство только для чтения
protected CDbConnection getDbConnection()
экземпляр соединения с базой данных
params свойство (доступно с версии 1.1.4)
public array $params;
параметры (имя=>значение), которые должны быть привязаны к SQL-запросу, указанному в свойстве sql.
sql свойство
public string $sql;
SQL-запрос, результат которого используется для определения, была ли изменена зависимость. Обратите внимание, что SQL-запрос должен возвращать единственное значение.
Подробное описание методов
__construct() метод
public void __construct(string $sql=NULL) | ||
| $sql | строка | SQL-запрос, результат которого используется для определения, была ли изменена зависимость. |
public function __construct($sql=null)
{
$this->sql=$sql;
}
Конструктор.
__sleep() метод
public array __sleep() | ||
| {return} | массив | |
public function __sleep()
{
$this->_db=null;
return array_keys((array)$this);
}
Магический метод PHP sleep. Этот метод гарантирует, что экземпляр базы данных установлен в значение null, так как он содержит дескрипторы ресурсов.
generateDependentData() метод
protected mixed generateDependentData() | ||
| {return} | смешанный тип | данные, необходимые для определения, была ли изменена зависимость. |
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.'));
}
Генерирует данные, необходимые для определения, была ли изменена зависимость. Этот метод возвращает значение глобального состояния.
getDbConnection() метод
protected CDbConnection getDbConnection() | ||
| {return} | CDbConnection | экземпляр подключения к базе данных |
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)));
}
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDbCacheDependency