有哪几种PHP注册表模式
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,本篇内容介绍了"有哪几种PHP注册表模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这里主要按作用
千家信息网最后更新 2025年02月12日有哪几种PHP注册表模式
本篇内容介绍了"有哪几种PHP注册表模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
这里主要按作用域介绍三种类别的注册表类(请求级别、会话级别、应用程序级别)。
namespace woo\base;//基类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 $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){ //\woo\controller\Request 主要功能是处理用户请求信息的一个类 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'); }}//应用程序级别,此示例中因相关的值是保存在文本文件中,所以只要文件存在,保存的值也就一直存在 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]){ // 文件内容假如被修改过,那么就要重新获取里面的值 $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注册表模式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
级别
文件
注册表
内容
程序
模式
周期
应用程序
时间
更多
用户
知识
示例
应用
实用
学有所成
接下来
作用
信息
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
崇明区新能源软件开发推荐厂家
湖南省软件开发培训哪里好
国家网络安全宣传周法治日活动
德阳软件开发技巧
手机网络安全自查材料
杀毒软件离线升级服务器搭建
软件设计中数据库设计自顶向下
中科院网络安全教程视频
永康软件开发者怎么样
pes2018数据库地址
两个数据库作关联
机关网络安全工作责任制度
ubuntu服务器安全
宇视流媒体服务器
tbc免费转出服务器
加佳网络技术有限公司
新时代网络安全新问题
国家网络安全中心投诉
服务器内硬盘类型
看图识字软件开发成本
软件开发流程原型设计模式
天津直销软件开发
达梦数据库复制黏贴数据
五家渠互联网科技怎么样
戴尔服务器可以插硬盘吗
永州市网络安全委员会
淘宝用户数据库表格
参加软件开发案例 项目成员
网络安全绘画图片一年级
kf2开服务器