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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
PHP常用的排序和查找算法
Aug 06 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
php 实现进制相互转换
Apr 07 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 PHP
php实现JWT验证的实例教程
Nov 26 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.ini 中文版
2006/10/28 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
使javascript也能包含文件
2006/10/26 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python标记语句块使用方法总结
2019/08/05 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python定义具名元组实例操作
2021/02/28 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
妇女工作先进事迹
2014/08/17 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL