首页 > 代码库 > 八. .PHP模式设计----企业模式(1)
八. .PHP模式设计----企业模式(1)
(*暂时未拆分前端控制器和应用控制器,全部集成在Command类实现)
1 注册表模式 //注册表模式 //注册表模式用于提供一个系统级别对象,在任何地方都方便访问(可以使用单例模式) class Registry{ private static $instance; private $request; private function __construct(){} static function instance(){ if(!isset(self::$instance)){ self::$instance=new self(); } return self::$instance; } function getRequest(){ $this->request; } function setRequest(Request $request){ $this->request=$request; } } class Request{} 2 三种作用域下的注册表 namespace woo\controller; class Request{} class Complex{} //创建一个具有作用域的注册表模式 //请求级别注册表 namespace woo\base; use woo; abstract class Registry{ abstract protected function get($key); abstract protected function set($key,$val); } 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 isset($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(woo\controller\Request $request){ return self::instance()->set('request', $request); } } //会话级别的注册表 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 isset($_SESSION[__CLASS__][$key]); } return null; } protected function set($key, $val){ $_SESSION[__CLASS__][$key]=$val; } static function getComplex(){ return self::instance()->get('complex'); } static function setRequest(woo\controller\Complex $request){ return self::instance()->set('complex', $request); } } //应用程序级别的注册表 class ApplicationRegistry extends Registry{ private static $instance; private $freezedir='Data'; private $values=array(); private $mtimes=array(); private function __construct(){ session_start(); } //返回唯一实例 static function instance(){ if(!isset(self::$instance)){ self::$instance=new self(); } return self::$instance; } //get,set都是单独保存一个$key到文件中 protected function get($key){ $path=$this->freezedir.DIRECTORY_SEPARATOR.$key; if(file_exists($path)){ clearstatcache(); //获取文件修改时间 $mtime=filemtime($path); if(!isset($this->mtimes[$key])){ $this->mtimes[$key]=0; } //如果文件被修改 if($mtime > $this->mtimes[$key]){ $data=http://www.mamicode.com/file_get_contents($path);>八. .PHP模式设计----企业模式(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。