PHP時間戳格式全部匯總 (獲取時間、時間戳)
733
2024-01-31
注冊表模式可似把他想像成一個全局變量,所有的模塊都從這個全局變量里存取數(shù)據(jù),或者也可以想象成某個酒吧的許愿墻或留言版,上面的內(nèi)容大家都可以看到,也可以改寫。這里主要按作用域介紹三種類別的注冊表類(請求級別、會話級別、應(yīng)用程序級別)。
namespace woobase; //基類 abstract class Registry { abstract protected function get($key); abstract protected function set($key,$val); } //請求級別,他的生存周期通常為從用戶發(fā)起一個請求到后臺程序回復(fù)這個請求為止 class RequestRegistry extends Registry{ private $values = array(); private static $instance; private function __construct (){} static function instance(){ // 單例,即這個類只有一個唯一的實例 if(!isset(self::$instance)){ self::$instance = new self(); } return self::$instance; } protected function get($key){ if(isset($this->values[$key]){ return $this->values[$key]; } return null; } protected function set($key,$val){ $this->values[$key] = $val; } static function getRequest(){ return self::instance()->get('request'); } static function setRequest(woocontrollerRequest $request){ //woocontrollerRequest 主要功能是處理用戶請求信息的一個類 return self::instance()->set('request',$request); } } //會話級別,此示例中類的生存周期主要還是看SESSION的生存時間 class SessionRegistry extends Registry{ private static $instance; private function __construct (){ session_start(); } static function instance(){ if(!isset(self::$instance)){ self::$instance = new self(); } return self::$instance; } protected function get($key){ if(isset($_SESSION[__CLASS__][$key])){ return $_SESSION[__CLASS__][$key]; } return null; } protected function set($key,$val){ $_SESSION[__CLASS__][$key] = $val; } function setComplex(Complex $complex){ self::instance()->set('complex',$complex); } function getComplex(){ return self::instance()->get('complex'); } } //應(yīng)用程序級別,此示例中因相關(guān)的值是保存在文本文件中,所以只要文件存在,保存的值也就一直存在 class ApplicationRegistry extends Registry{ private Static $instance; private $freezedir = 'data'; private $values = array(); private $mtimes = array(); private function __construct (){} static function instance(){ if(!isset(self::$instance)){ self::$instance = new self(); } return self::$instance; } protected function get($key){ $path = $this->freezedir . DIRECTORY_SEPARATOR . $key; // 保存值的文件的路徑 if(file_exists($path)){ clearstatcache(); // 清除filemtime緩存的上次記錄的文件修改時間 $mtime = filemtime($path); if(!isset($this->mtimes[$key])){ $this->mtimes[$key] = 0; } if($mtime > $this->mtimes[$key]){ // 文件內(nèi)容假如被修改過,那么就要重新獲取里面的值 $data = file_get_contents($path); $this->mtimes[$key] = $mtime; return ($this->values[$key] = unserialize($data)); } } if(isset($this->values[$key])){ return $this->values[$key]; } return null; } protected function set ($key,$val){ $this->values[$key] = $val; $path = $this->freezedir . DIRECTORY_SEPARATOR . $key; file_put_contents($path,serialize($val)); $this->mtimes[$key] = time(); } static function getDSN(){ return self::instance()->get('dsn'); } static function setDSN($dsn){ return self::instance()->set('dsn',$dsn); } }
以上這篇老生常談PHP面向?qū)ο笾员砟J骄褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持綠夏網(wǎng)。
#免責(zé)聲明#
本站[綠夏技術(shù)導(dǎo)航]提供的一切軟件、教程和內(nèi)容信息僅限用于學(xué)習(xí)和研究目的;不得將上述內(nèi)容用于商業(yè)或者非法用途,否則,一切后果請用戶自負。本站信息來自網(wǎng)絡(luò)收集整理,版權(quán)爭議與本站無關(guān)。您必須在下載后的24個小時之內(nèi),從您的電腦或手機中徹底刪除上述內(nèi)容。如果您喜歡該程序或內(nèi)容,請支持正版,購買注冊,得到更好的正版服務(wù)。我們非常重視版權(quán)問題,如有侵權(quán)請郵件[admin@lxwl520.com]與我們聯(lián)系進行刪除處理。敬請諒解!