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+mysql保存和输出文件
Oct 09 PHP
PHP中使用BigMap实例
Mar 30 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
基于php实现的验证码小程序
Dec 13 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 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
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php远程下载类分享
2016/04/13 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python数据类型之Dict字典实例详解
2019/05/07 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python实现单机五子棋
2020/08/28 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
综治宣传月活动总结
2014/04/28 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
关于旅游的活动方案
2014/08/15 职场文书
小平小道观后感
2015/06/09 职场文书
Python 绘制多因子柱状图
2022/05/11 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers