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 默默经典版本
Aug 04 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
PHP实现删除字符串中任何字符的函数
Aug 11 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
PHP中echo与print区别点整理
Mar 09 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python实现图书借阅系统
2019/02/20 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
详解Python IO编程
2020/07/24 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
2014年端午节活动方案
2014/03/11 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书