Spec-Zone.ru › Yii 1.1

CDbStatePersister

Пакет system.base
Наследование класс CDbStatePersister » CApplicationComponent » CComponent
Реализует IApplicationComponent, IStatePersister
С версии 1.1.17
Исходный код framework/base/CDbStatePersister.php
CDbStatePersister реализует хранение данных в базе данных.

Он может использоваться для сохранения данных между несколькими запросами и сессиями.

По умолчанию CDbStatePersister хранит данные в таблице с именем 'state'. Вы можете изменить расположение, установив свойство stateTableName.

Для получения данных из CDbStatePersister вызовите метод load(). Для сохранения данных вызовите метод save().

Сравнение хранилища состояния, сессии и кэша:
  • Сессия: данные сохраняются в пределах одной пользовательской сессии.
  • Хранилище состояния: данные сохраняются на протяжении всех запросов/сессий (например, счётчик посещений).
  • Кэш: быстрое и летучее хранилище. Может использоваться как хранилище для сессий или хранилища состояния.

Свойства

Свойство Тип Описание Определено в
behaviors массив поведения, которые должны быть присоединены к этому компоненту. CApplicationComponent
db CDbConnection экземпляр CDbStatePersister
dbComponent строка идентификатор соединения CDbStatePersister
isInitialized булево Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
keyField строка Имя столбца для поля ключа CDbStatePersister
stateTableName строка имя таблицы базы данных, хранящей данные состояния. Убедитесь, что таблица существует, или пользователю базы данных предоставлены права на создание таблиц. CDbStatePersister
valueField строка Имя столбца для поля значения CDbStatePersister

Публичные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__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
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
exists() CDbStatePersister
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getIsInitialized() Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли обработчики событий для указанного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует компонент. CDbStatePersister
load() Загружает данные состояния из хранилища. CDbStatePersister
raiseEvent() Вызывает событие. CComponent
save() Сохраняет состояние приложения в постоянном хранилище. CDbStatePersister

Защищенные методы

Метод Описание Определено в
createTable() Создаёт таблицу хранилища состояния CDbStatePersister

Подробности свойств

db свойство

public CDbConnection $db;

экземпляр

dbComponent свойство

public string $dbComponent;

идентификатор соединения

keyField свойство

public string $keyField;

Имя столбца для поля ключа

stateTableName свойство

public string $stateTableName;

имя таблицы базы данных, хранящей данные состояния. Убедитесь, что таблица существует, или пользователю базы данных предоставлены права на создание таблиц.

valueField свойство

public string $valueField;

Имя столбца для поля значения

Подробности методов

createTable() метод

protected void createTable()
Исходный код: framework/base/CDbStatePersister.php#137 (показать)
protected function createTable()
{
    try
    {
        
$command=$this->db->createCommand();
        
$command->createTable($this->stateTableName,array(
            
$this->keyField=>'string NOT NULL',
            
$this->valueField=>'text NOT NULL',
            
'PRIMARY KEY ('.$this->db->quoteColumnName($this->keyField).')'
        
));
    }
    catch (
CDbException $e)
    {
        throw new 
CException(Yii::t('yii','Can\'t create state persister table. Check CREATE privilege for \'{db}\' connection user or create table manually with SQL: {sql}.',array('{db}'=>$this->dbComponent,'{sql}'=>$command->text ) ) );
    }
}

Создаёт таблицу хранилища состояния

exists() метод

public mixed exists()
{возвращаемое значение} смешанный тип
Исходный код: framework/base/CDbStatePersister.php#123 (показать)
public function exists()
{
    
$command=$this->db->createCommand();
    
$command=$command->select($this->keyField)->from($this->stateTableName);
    
$command=$command->where($this->db->quoteColumnName($this->keyField).'=:key',array(
        
':key'=>Yii::app()->name
    
));
    return 
$command->queryScalar();
}

init() метод

public void init()
Исходный код: framework/base/CDbStatePersister.php#64 (показать)
public function init()
{
    
parent::init();
    if(
$this->stateTableName===null)
        throw new 
CException(Yii::t('yii', 'stateTableName param cannot be null.'));
    
$this->db=Yii::app()->getComponent($this->dbComponent);
    if(
$this->db===null)
        throw new 
CException(Yii::t('yii', '\'{db}\' component doesn\'t exist.',array(
            
'{db}'=>$this->dbComponent
        
)));
    if(!(
$this->db instanceof CDbConnection))
        throw new 
CException(Yii::t ('yii', '\'{db}\' component is not a valid CDbConnection instance.',array(
            
'{db}'=>$this->dbComponent
        
)));
    if(
$this->db->schema->getTable($this->stateTableName,true)===null)
        
$this->createTable();
}

Инициализирует компонент. Этот метод переопределяет реализацию родительского класса, гарантируя, что stateFile содержит корректное значение.

load() метод

public mixed load()
{return} смешанный данные состояния. Нулевое значение, если данные состояния недоступны.
Исходный код: framework/base/CDbStatePersister.php#86 (показать)
public function load()
{
    
$command=$this->db->createCommand();
    
$command=$command->select($this->valueField)->from($this->stateTableName);
    
$command=$command->where($this->db->quoteColumnName($this->keyField).'=:key',array(
        
':key'=>Yii::app()->name
    
));
    
$state=$command->queryScalar();
    if(
false!==$state)
        return 
unserialize($state);
    else
        return 
null;
}

Загружает данные состояния из постоянного хранилища.

save() метод

public int save(mixed $state)
$state смешанный данные состояния (должны быть сериализуемы).
{return} целое
Исходный код: framework/base/CDbStatePersister.php#105 (показать)
public function save($state)
{
    
$command=$this->db->createCommand();
    if(
false===$this->exists())
        return 
$command->insert($this->stateTableName,array(
            
$this->keyField=>Yii::app()->name,
            
$this->valueField=>serialize($state)
        ));
    else
        return 
$command->update($this->stateTableName,array($this->valueField=>serialize($state)),
            
$this->db->quoteColumnName($this->keyField).'=:key',
            array(
':key'=>Yii::app()->name)
    );
}

Сохраняет состояние приложения в постоянном хранилище.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDbStatePersister

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API