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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP 表单提交给自己
Jul 24 PHP
PHP 实用代码收集
Jan 22 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
PHP实现微信发红包程序
Aug 24 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
laravel框架与其他框架的详细对比
Oct 23 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 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
elgg 获取文件图标地址的方法
2010/03/20 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python基于pyDes库实现des加密的方法
2017/04/29 Python
使用pandas读取文件的实现
2019/07/31 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python中的流程控制详解
2021/02/18 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
售后服务承诺书
2014/03/26 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
导游经典开场白——导游词
2019/04/17 职场文书