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().
鎸佷箙鏁版嵁锛屼細璇濆拰缂撳瓨涔嬮棿鐨勬瘮杈冨涓:
鍥犱负鏈嶅姟鍣ㄧ殑璧勬簮閫氬父鏈夐檺, 濡傛灉浣犺鍒掍娇鐢–StatePersister瀛樺偍澶ч噺鐨勬暟鎹 浣犲簲璇ヨ冭檻浣跨敤鍚炲悙鎬ч珮鐨 鍩轰簬鏁版嵁鐨勬寔涔呭瓨鍌ㄣ
CStatePersister鏄竴涓牳蹇冪殑搴旂敤缁勪欢锛岀敤浜庡瓨鍌ㄥ叏灞鐨勫簲鐢ㄧ▼搴忕姸鎬併 浣犱篃鍙互閫氳繃璁块棶CApplication::getStatePersister() 浜嗚В鍩轰簬缂撳瓨鐨勯〉闈㈡寔涔呭瓨鍌ㄣ
瀹冨彲浠ョ敤鏉ヤ繚鎸佸涓姹傛垨浼氳瘽鐨勬暟鎹
榛樿, 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);
}
淇濆瓨搴旂敤绋嬪簭鐘舵佸埌鎸佷箙瀛樺偍銆