提取一种对数据库配置的通用方式

目的是通过通用类访问配置文件的方式,提供对数据库连接的动态获取和设置,使开发时和生产应用时都能够提供灵活的、简化的、解耦的操作方式。比如在配置文件中配置好两套数据库访问内容,一套测试库访问地址,一套生产库访问,在需要获取连接信息时,只要填入符合的参数即可

结构

  • 工厂模式,传参,返回结果;
  • 成功返回 array,否则返回 string 错误信息;
  • 两个文件配合工作,一个是json格式配置文件,负责保存数据库连接内容,另一个是读取类,负责读取和检索,返回结果;

使用方式

  • 定义配置文件为db-config.json,内容为数据库连接信息;
  • 读取类db-config.php提供公共静态访问,供上层接口调用;
  • 上层接口使用接口方法$db_conf = DbConf::Conf("debug");检索debug为标志的数据库连接信息。如有 $db_conf 为数组格式;

见代码

{
"debug": {
"db_host": "",
"db_name": "",
"db_user": "",
"db_password": ""
}
}
<?php
class DbConf{
public static function Conf( $conf_name ){ if(empty($conf_name)){
die("Illegal parameter");
} $from = "localhost"; // allow legal host only
if(!isset($_SERVER['HTTP_HOST']) || $_SERVER['HTTP_HOST']!=$from){
die("Unauthorized access");
} $json_config = file_get_contents('db-config.json'); $json_data = json_decode($json_config, true); if( array_key_exists($conf_name, $json_data)){
return $json_data[$conf_name];
}else{
return "Not Found";
}
}
}

最新文章

  1. CoreData的一些简单运用
  2. 【OpenStack】OpenStack系列7之Nova详解
  3. yii2 sphinx Ajax搜索分页 关键词的缓存
  4. Java学习之Java的单例模式
  5. Cocos2d-x v3.3 lua绑定c++类方法总结
  6. [每日一题] OCP1z0-047 :2013-08-29 NULL............................................................168
  7. ON、WHERE、HAVING的差别
  8. 【干货】免费获得WebStorm软件
  9. Egret 位图,纹理,添加背景 学习
  10. Entitlements (授权机制) 延伸
  11. Vuejs实例-00Vuejs2.0全家桶结合ELementUI制作后台管理系统
  12. 服务端预渲染之Nuxt(爬坑篇)
  13. Codeforces 446A. DZY Loves Sequences (线性DP)
  14. JQuery 中$(&quot;input:eq(0)&quot;) eq 的意思
  15. datatable的select()结果直接修改,会体现在表上
  16. 导入到eclipse里的工程挺大的,然后就一直报: An internal error occurred during: &quot;Building workspace&quot;. GC overhead limit exceeded 这个错误。
  17. tomcat优化之安装并配置apr库
  18. luogu P3338 [ZJOI2014]力
  19. SpringBoot多模块搭建,依赖管理
  20. 漏洞复现:Struts2 S2-032 漏洞环境

热门文章

  1. Unity C# 自定义TCP传输协议以及封包拆包、解决粘包问题
  2. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
  3. Linux网络设置(第二版) --Linux网络设置
  4. FNDCPASS Troubleshooting Guide For Login and Changing Applications Passwords
  5. Leetcode_203_Remove Linked List Elements
  6. 自动生成材质Material(Unity3D开发之十九)
  7. C语言之linux内核实现位数高低位互换
  8. 初识MySQL数据库的各种CMD命令窗口下的指令
  9. obj-c编程05:类的多态与id动态绑定
  10. Which SQL statement is the trump card to the senior software developer