Yii 프레임워크로 AR 클래스 자동 기록 로그 구현
public function RecordLog($objEvent) {
// ,
}
2. 클래스를 초기화할 때 로그 이벤트 기록에 이벤트 처리 프로그램을 추가합니다. 즉, 로그 이벤트 연결:
public function init() {
//
$this->attachEventHandler('onRecordLog', array($this, 'RecordLog'));
parent::init();
}
3. 로깅 이벤트를 추가합니다. 즉, 바인딩된 로깅 이벤트에서 로깅 이벤트를 트리거합니다.
public function onRecordLog($objEvent) {
$this->raiseEvent('onRecordLog', $objEvent);
}
4. 기록 변경을 추가하는 방법 (insert, update...)기록 로그를 호출하는 이벤트, 즉 기본 클래스의 insert, 업데이트 등을 다시 쓰는 방법, 기록 업데이트가 성공한 후에 기록 로그의 이벤트를 호출하여 로그의 기록을 완성합니다.
public function addLogData($bFlush = false) {
if($bFlush && $this->hasEventHandler('onRecordLog')) {
$this->onRecordLog(new CEvent($this));
}
$this->aLogs = array();
$this->nLogCount = 0;
$this->nListId = null;
$this->sListType = '';
$this->nLogUser = null;
$this->sLogDesc = '';
}
insert 다시 쓰기 방법:
public function insert($attributes = null) {
$bIsSuccess = parent::insert($attributes);
$this->addLogData($bIsSuccess);
return $bIsSuccess;
}
이렇게 하면 다른 모델 클래스는 MyActiveRecord 클래스를 계승한 후 RecordLog 방법을 다시 쓴 후 모델 기록을 업데이트할 때 AR 클래스는 정보 변경된 로그를 자동으로 기록하여 로그 데이터를 저장하여 다른 프로그램이 로그를 분석하고 이용하도록 한다.
MyRecordRecord 클래스의 전체 구현:
abstract class MyActiveRecord extends CActiveRecord {
public function init() {
//
$this->attachEventHandler('onRecordLog', array($this, 'RecordLog'));
parent::init();
}
public function insert($attributes = null) {
$bIsSuccess = parent::insert($attributes);
$this->addLogData($bIsSuccess);
return $bIsSuccess;
}
public function update($attributes = null) {
$bIsSuccess = parent::update($attributes);
$this->flushLogData($bIsSuccess);
return $bIsSuccess;
}
public function flushLogData($bFlush = false) {
if($bFlush && $this->hasEventHandler('onRecordLog')) {
$this->onAddRecordLog(new CEvent($this));
}
}
public function onRecordLog($objEvent) {
$this->raiseEvent('onRecordLog', $objEvent);
}
public function RecordLog($objEvent) {
// ,
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.