PHP读取配置文件类实例(可读取ini,yaml,xml等)


Posted in PHP onJuly 28, 2015

本文实例讲述了PHP读取配置文件类实例。分享给大家供大家参考。具体如下:

<?php 
class Settings { 
 var $_settings = array (); 
 function get($var) { 
 $var = explode ( '.', $var ); 
 $result = $this->_settings; 
 foreach ( $var as $key ) { 
  if (! isset ( $result [$key] )) { 
  return false; 
  }  
  $result = $result [$key]; 
 }  
 return $result; 
 } 
 function load() { 
 trigger_error ( 'Not yet implemented', E_USER_ERROR ); 
 } 
} 
class Settings_PHP extends Settings { 
 function load($file) { 
 if (file_exists ( $file ) == false) { 
  return false; 
 } 
 // Include file 
 include ($file); 
 unset ( $file ); 
 // Get declared variables 
 $vars = get_defined_vars (); 
 // Add to settings array 
 foreach ( $vars as $key => $val ) { 
  if ($key == 'this') 
  continue;  
  $this->_settings [$key] = $val; 
 } 
 } 
} 
class Settings_INI extends Settings { 
 function load($file) { 
 if (file_exists ( $file ) == false) { 
  return false; 
 } 
 $this->_settings = parse_ini_file ( $file, true ); 
 } 
} 
class Settings_YAML extends Settings { 
 function load($file) { 
 if (file_exists ( $file ) == false) { 
  return false; 
 } 
 include ('spyc.php'); 
 $this->_settings = Spyc::YAMLLoad ( $file ); 
 } 
} 
class Settings_XML extends Settings { 
 function load($file) { 
 if (file_exists ( $file ) == false) { 
  return false; 
 } 
 include ('xmllib.php'); 
 $xml = file_get_contents ( $file ); 
 $data = XML_unserialize ( $xml ); 
 $this->_settings = $data ['settings']; 
 } 
} 
?>
/** 
* 针对PHP的配置,如有配置文件 
*config.php 
<?php 
$db = array(); 
// Enter your database name here: 
$db['name'] = 'test'; 
// Enter the hostname of your MySQL server: 
$db['host'] = 'localhost'; 
?> 
//具体调用: 
include ('settings.php'); //原始环境假设每个类为单独的一个类名.php文件 
// Load settings (PHP) 
$settings = new Settings_PHP; 
$settings->load('config.php'); 
echo 'PHP: ' . $settings->get('db.host') . ''; 
* 
*/ 
 读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组
/** 
* ini例子:config.ini 
* 
[db] 
name = test 
host = localhost 
//调用例子: 
$settings = new Settings_INI; 
$settings->load('config.ini'); 
echo 'INI: ' . $settings->get('db.host') . ''; 
*/ 
 读取XML文件,需要用到XML_PARSER,xmllib.php
/** 
* XML例子:config.xml 
<?xml version="1.0" encoding="UTF-8"?> 
<settings> 
<db> 
 <name>test</name> 
 <host>localhost</host> 
</db> 
</settings> 
// Load settings (XML) 
$settings = New Settings_XML; 
$settings->load('config.xml'); 
echo 'XML: ' . $settings->get('db.host') . ''; 
* 
*/ 
 读取YAML格式文件,使用YAML必须使用到SPYC这个库
/** 
YAML配置例子:config.yaml 
db: 
 name: test 
 host: localhost 
// Load settings (YAML) 
$settings = New Settings_YAML; 
$settings->load('config.yaml'); 
echo 'YAML: ' . $settings->get('db.host') . ''; 
*/

1. ini有点过时??
2. xml比较好,
3. yaml很好,但是毕竟没有标准化。
4. txt要自己组织格式,开放性不好。
5. 类序列化。比较好,但是不熟悉的人使用比较麻烦!
6. php定义常量(你不用修改数据吗?)

所以:xml最好。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php flush类输出缓冲剖析
Oct 19 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
php 获取xml接口数据的处理方法
May 31 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
PHP实现简单的新闻发布系统实例
Jul 28 #PHP
PHP实现的memcache环形队列类实例
Jul 28 #PHP
如何实现php图片等比例缩放
Jul 28 #PHP
PHP封装CURL扩展类实例
Jul 28 #PHP
php图像处理类实例
Jul 28 #PHP
图文介绍PHP添加Redis模块及连接
Jul 28 #PHP
PHP生成树的方法
Jul 28 #PHP
You might like
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
分享php多功能图片处理类
2016/05/15 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
js实现碰撞检测
2021/01/29 Javascript
简单介绍Python中的readline()方法的使用
2015/05/24 Python
python批量提取word内信息
2015/08/09 Python
python实现日常记账本小程序
2018/03/10 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Django的models中on_delete参数详解
2019/07/16 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
SQL Server面试题
2016/10/17 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
广告语设计及教案
2014/03/21 职场文书
教师师德承诺书
2014/03/26 职场文书
学校花圃的标语
2014/06/18 职场文书
国际商务专业求职信
2014/07/15 职场文书
卡特教练观后感
2015/06/08 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis