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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
PHP分页显示制作详细讲解
Nov 19 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
php ajax实现文件上传进度条
Mar 29 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
php实现的错误处理封装类实例
Jun 20 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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 Document 代码注释规范
2009/04/13 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
jquery自定义表格样式
2015/11/23 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Python 自动补全(vim)
2014/11/30 Python
python实现读取命令行参数的方法
2015/05/22 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
如何基于Python批量下载音乐
2019/11/11 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
一年级班主任感言
2014/03/08 职场文书
大学生社会实践评语
2014/04/25 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python