CTimestampBehavior
| Пакет | zii.behaviors |
|---|---|
| Наследование | класс CTimestampBehavior » CActiveRecordBehavior » CModelBehavior » CBehavior » CComponent |
| Реализует | IBehavior |
| С | 1.1 |
| Исходный код | framework/zii/behaviors/CTimestampBehavior.php |
CTimestampBehavior автоматически заполнит атрибуты, связанные с датой и временем, когда активная запись создается и/или обновляется. Вы можете указать модель активной записи, чтобы использовать этот базовый класс, например:
public function behaviors(){
return array(
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'createAttribute' => 'create_time_attribute',
'updateAttribute' => 'update_time_attribute',
)
);
}
Параметры createAttribute и updateAttribute по умолчанию установлены в 'create_time' и 'update_time' соответственно, поэтому их настройка необязательна. Если вы не хотите, чтобы CTimestampBehavior устанавливал отметку времени для обновления или создания записи, установите соответствующий параметр атрибута в значение null. По умолчанию атрибут обновления устанавливается только при обновлении записи. Если вы также хотите установить его при создании записи, установите параметр setUpdateOnCreate в значение true.
Хотя CTimestampBehavior пытается самостоятельно определить значение для вставки в атрибут отметки времени, вы можете указать пользовательское значение вместо этого через timestampExpression
Публичные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| createAttribute | смешанный | Имя атрибута для хранения времени создания. | CTimestampBehavior |
| enabled | boolean | включено ли это поведение | CBehavior |
| owner | CComponent | компонент-владелец, к которому прикреплено это поведение. | CBehavior |
| setUpdateOnCreate | bool | Устанавливать ли атрибут обновления на время создания при создании записи. | CTimestampBehavior |
| timestampExpression | смешанный | Выражение, которое будет использоваться для генерации отметки времени. | CTimestampBehavior |
| updateAttribute | смешанный | Имя атрибута для хранения времени изменения. | CTimestampBehavior |
Защищённые свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| map | массив | Сопоставление типов столбцов с методом базы данных | CTimestampBehavior |
Публичные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attach() | Прикрепляет объект поведения к компоненту. | CBehavior |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик события к событию. | CComponent |
| beforeSave() | Реагирует на событие CModel::onBeforeSave. | CTimestampBehavior |
| canGetProperty() | Определяет, может ли свойство быть прочитано. | CComponent |
| canSetProperty() | Определяет, может ли свойство быть установлено. | CComponent |
| detach() | Отсоединяет объект поведения от компонента. | CBehavior |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик события. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикрепленные к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикрепленные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| events() | Объявляет события и соответствующие методы обработчиков событий. | CActiveRecordBehavior |
| getEnabled() | Возвращает значение, указывающее, включено ли это поведение. | CBehavior |
| getEventHandlers() | Возвращает список прикрепленных обработчиков событий для события. | CComponent |
| getOwner() | Возвращает компонент-владелец, к которому прикреплено это поведение. | CBehavior |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, имеет ли событие с заданным именем прикрепленные обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Возбуждает событие. | CComponent |
| setEnabled() | Устанавливает значение, указывающее, включено ли это поведение. | CBehavior |
Защищённые методы
Подробное описание свойств
createAttribute свойство
public mixed $createAttribute;
Имя атрибута для хранения времени создания. Установите в null, чтобы не использовать метку времени для атрибута создания. По умолчанию «create_time».
map свойство
protected static array $map;
Сопоставляет типы столбцов с методами базы данных.
setUpdateOnCreate свойство
public bool $setUpdateOnCreate;
Устанавливать ли атрибут обновления на метку времени создания при создании. В противном случае он останется прежним. По умолчанию false.
timestampExpression свойство
public mixed $timestampExpression;
Выражение, которое будет использоваться для генерации метки времени. Это может быть строка, представляющая выражение PHP (например, «time()»), или объект CDbExpression, представляющий выражение БД (например, new CDbExpression('NOW()')). По умолчанию null, что означает, что мы попытаемся автоматически определить соответствующую метку времени. Если мы не сможем найти соответствующую метку времени, она вернётся к текущей метке времени Unix.
Выражение PHP может быть любым кодом PHP, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к справочнику PHP.
updateAttribute свойство
public mixed $updateAttribute;
Имя атрибута для хранения времени изменения. Установите в null, чтобы не использовать метку времени для атрибута обновления. По умолчанию «update_time».
Подробное описание методов
beforeSave() метод
public void beforeSave(CModelEvent $event) | ||
| $event | CModelEvent | параметр события |
public function beforeSave($event) {
if ($this->getOwner()->getIsNewRecord() && ($this->createAttribute !== null)) {
$this->getOwner()->{$this->createAttribute} = $this->getTimestampByAttribute($this->createAttribute);
}
if ((!$this->getOwner()->getIsNewRecord() || $this->setUpdateOnCreate) && ($this->updateAttribute !== null)) {
$this->getOwner()->{$this->updateAttribute} = $this->getTimestampByAttribute($this->updateAttribute);
}
}
Реагирует на событие CModel::onBeforeSave. Устанавливает значения атрибутов создания или изменения в соответствии с конфигурацией.
getTimestampByAttribute() метод
protected mixed getTimestampByAttribute(string $attribute) | ||
| $attribute | строка | $attribute |
| {return} | смешанный тип | метка времени (например, метка времени Unix или функция MySQL) |
protected function getTimestampByAttribute($attribute) {
if ($this->timestampExpression instanceof CDbExpression)
return $this->timestampExpression;
elseif ($this->timestampExpression !== null)
{
try
{
return @eval('return '.$this->timestampExpression.';');
}
catch (ParseError $e)
{
return false;
}
}
$columnType = $this->getOwner()->getTableSchema()->getColumn($attribute)->dbType;
return $this->getTimestampByColumnType($columnType);
}
Получает соответствующую метку времени в зависимости от типа столбца $attribute.
getTimestampByColumnType() метод
protected mixed getTimestampByColumnType(string $columnType) | ||
| $columnType | строка | $columnType |
| {return} | смешанный тип | метка времени (например, метка времени Unix или функция MySQL) |
protected function getTimestampByColumnType($columnType) {
return isset(self::$map[$columnType]) ? new CDbExpression(self::$map[$columnType]) : time();
}
Возвращает соответствующую метку времени в зависимости от $columnType.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CTimestampBehavior