Yii Framework v1.1.10 绫诲弬鑰

CStatePersister

system.base
缁ф壙 class CStatePersister » CApplicationComponent » CComponent
瀹炵幇 IApplicationComponent, IStatePersister
婧愯嚜 1.0
鐗堟湰 $Id: CStatePersister.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/base/CStatePersister.php
CStatePersister瀹炵幇涓涓熀浜庢枃浠剁殑鎸佷箙鏁版嵁瀛樺偍銆

瀹冨彲浠ョ敤鏉ヤ繚鎸佸涓姹傛垨浼氳瘽鐨勬暟鎹

榛樿, CStatePersister瀛樺偍鏁版嵁鍦ㄤ竴涓悕瀛楀彨鈥榮tate.bin鈥欐枃浠朵腑瀹冧綅浜庡簲鐢ㄧ▼搴忔寚瀹氱殑 runtime 璺緞涓嬨 浣犲彲浠ラ氳繃璁剧疆stateFile灞炴ф潵鏀瑰彉瀹冪殑浣嶇疆銆

浠嶤StatePersister璋冪敤鏁版嵁浣跨敤load()銆備繚瀛樻暟鎹娇鐢 save().

鎸佷箙鏁版嵁锛屼細璇濆拰缂撳瓨涔嬮棿鐨勬瘮杈冨涓:
  • session锛氬崟涓敤鎴风殑浼氳瘽鎸佷箙鏁版嵁.
  • state persister锛氭墍鏈夎姹傜殑/浼氳瘽鐨勬寔涔呮暟鎹紙渚嬪锛岀偣鍑荤粺璁★級銆
  • cache锛氫笉绋冲畾骞跺揩閫熺殑鍌ㄨ銆傚畠鍙殑浣跨敤浠嬩簬浼氳瘽鍜屾寔涔呮暟鎹箣闂淬


鍥犱负鏈嶅姟鍣ㄧ殑璧勬簮閫氬父鏈夐檺, 濡傛灉浣犺鍒掍娇鐢–StatePersister瀛樺偍澶ч噺鐨勬暟鎹 浣犲簲璇ヨ冭檻浣跨敤鍚炲悙鎬ч珮鐨 鍩轰簬鏁版嵁鐨勬寔涔呭瓨鍌ㄣ

CStatePersister鏄竴涓牳蹇冪殑搴旂敤缁勪欢锛岀敤浜庡瓨鍌ㄥ叏灞鐨勫簲鐢ㄧ▼搴忕姸鎬併 浣犱篃鍙互閫氳繃璁块棶CApplication::getStatePersister() 浜嗚В鍩轰簬缂撳瓨鐨勯〉闈㈡寔涔呭瓨鍌ㄣ

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
behaviors array 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 CApplicationComponent
cacheID string 杩欎釜ID鎸囧畾鐨勬槸缂撳瓨搴旂敤缁勪欢锛岀敤浜庣紦瀛樺簲鐢ㄧ▼搴忕姸鎬佹暟鎹 榛樿鏄榗ache鈥欐寚鐨勬槸涓荤紦瀛樺簲鐢ㄧ粍浠躲 璁剧疆杩欎釜灞炴т负false锛屽皢绂佹缂撳瓨搴旂敤绋嬪簭鐘舵佹暟鎹 CStatePersister
isInitialized boolean 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 CApplicationComponent
stateFile string 瀛樺偍鏁版嵁鐨勬枃浠惰矾寰勩 璇风‘淇濈洰褰曞瓨鍦ㄨ繖涓枃浠跺苟涓擶eb鏈嶅姟鍣ㄨ繘绋嬪杩欎釜瀹冨叿鏈夊彲鍐欐潈闄愯纭繚鐩綍瀛樺湪杩欎釜鏂囦欢骞朵笖Web鏈嶅姟鍣ㄨ繘绋嬪杩欎釜瀹冨叿鏈夊彲鍐欐潈闄愩 濡傛灉浣跨敤鐩稿璺緞锛岃纭繚璺緞鏄纭殑銆 CStatePersister

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 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() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getIsInitialized() 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 CApplicationComponent
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
init() 鍒濆鍖栬繖涓粍浠躲 CStatePersister
load() 浠庢寔涔呭瓨鍌ㄥ姞杞界姸鎬佹暟鎹 CStatePersister
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
save() 淇濆瓨搴旂敤绋嬪簭鐘舵佸埌鎸佷箙瀛樺偍銆 CStatePersister

灞炴ц缁

cacheID 灞炴
public string $cacheID;

杩欎釜ID鎸囧畾鐨勬槸缂撳瓨搴旂敤缁勪欢锛岀敤浜庣紦瀛樺簲鐢ㄧ▼搴忕姸鎬佹暟鎹 榛樿鏄榗ache鈥欐寚鐨勬槸涓荤紦瀛樺簲鐢ㄧ粍浠躲 璁剧疆杩欎釜灞炴т负false锛屽皢绂佹缂撳瓨搴旂敤绋嬪簭鐘舵佹暟鎹

stateFile 灞炴
public string $stateFile;

瀛樺偍鏁版嵁鐨勬枃浠惰矾寰勩 璇风‘淇濈洰褰曞瓨鍦ㄨ繖涓枃浠跺苟涓擶eb鏈嶅姟鍣ㄨ繘绋嬪杩欎釜瀹冨叿鏈夊彲鍐欐潈闄愯纭繚鐩綍瀛樺湪杩欎釜鏂囦欢骞朵笖Web鏈嶅姟鍣ㄨ繘绋嬪杩欎釜瀹冨叿鏈夊彲鍐欐潈闄愩 濡傛灉浣跨敤鐩稿璺緞锛岃纭繚璺緞鏄纭殑銆

鏂规硶璇︾粏

init() 鏂规硶
public void init()
婧愮爜锛 framework/base/CStatePersister.php#63 (鏄剧ず)
public function init()
{
    
parent::init();
    if(
$this->stateFile===null)
        
$this->stateFile=Yii::app()->getRuntimePath().DIRECTORY_SEPARATOR.'state.bin';
    
$dir=dirname($this->stateFile);
    if(!
is_dir($dir) || !is_writable($dir))
        throw new 
CException(Yii::t('yii','Unable to create application state file "{file}". Make sure the directory containing the file exists and is writable by the Web server process.',
            array(
'{file}'=>$this->stateFile)));
}

鍒濆鍖栬繖涓粍浠躲 杩欎釜鏂规硶閲嶈浇浜嗙埗绫荤殑瀹炵幇,娣诲姞浜嗕竴涓stateFile 鐨勬湁鏁堝笺

load() 鏂规硶
public mixed load()
{return} mixed 鐘舵佹暟鎹紝濡傛灉鐘舵佹暟鎹笉鍙敤杩斿洖null銆
婧愮爜锛 framework/base/CStatePersister.php#78 (鏄剧ず)
public function load()
{
    
$stateFile=$this->stateFile;
    if(
$this->cacheID!==false && ($cache=Yii::app()->getComponent($this->cacheID))!==null)
    {
        
$cacheKey='Yii.CStatePersister.'.$stateFile;
        if((
$value=$cache->get($cacheKey))!==false)
            return 
unserialize($value);
        else if((
$content=@file_get_contents($stateFile))!==false)
        {
            
$cache->set($cacheKey,$content,0,new CFileCacheDependency($stateFile));
            return 
unserialize($content);
        }
        else
            return 
null;
    }
    else if((
$content=@file_get_contents($stateFile))!==false)
        return 
unserialize($content);
    else
        return 
null;
}

浠庢寔涔呭瓨鍌ㄥ姞杞界姸鎬佹暟鎹

save() 鏂规硶
public void save(mixed $state)
$state mixed 鐘舵佹暟鎹紙蹇呴』鏄簭渚嬪寲鐨勶級銆
婧愮爜锛 framework/base/CStatePersister.php#104 (鏄剧ず)
public function save($state)
{
    
file_put_contents($this->stateFile,serialize($state),LOCK_EX);
}

淇濆瓨搴旂敤绋嬪簭鐘舵佸埌鎸佷箙瀛樺偍銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.