PHP 访问数据库配置通用方法(json)


Posted in PHP onMay 20, 2018

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

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

结构

  • 工厂模式,传参,返回结果;
  • 成功返回 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类

<?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";
  }
 }
}

这篇文章就介绍到这了,需要的朋友可以参考一下

PHP 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 #PHP
windows环境下使用Composer安装ThinkPHP5
May 18 #PHP
PHP实现登录验证码校验功能
May 17 #PHP
php识别翻转iphone拍摄的颠倒图片
May 17 #PHP
php通过各种函数判断0和空
Jul 04 #PHP
PHP手机短信验证码实现流程详解
May 17 #PHP
PHP实现多图上传和单图上传功能
May 17 #PHP
You might like
XHProf报告字段含义的解析
2016/05/17 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
python爬取各类文档方法归类汇总
2018/03/22 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
大学生毕业自荐信
2013/10/10 职场文书
劳资协议书范本
2014/04/23 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
公务员政审个人总结
2015/02/12 职场文书
2016猴年春节问候语
2015/11/11 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python