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动态图像的创建
Oct 09 PHP
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
linux下实现定时执行php脚本
Feb 13 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP自动识别当前使用移动终端
May 21 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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
Zend公司全球首推PHP认证
2006/10/09 PHP
PHP使用者状态管理功能的应用
2006/10/09 PHP
php 读取文件乱码问题
2010/02/20 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
阳光体育活动总结
2014/04/30 职场文书
求职信怎么写范文
2014/05/26 职场文书
庆七一主持词
2015/06/29 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS