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 相关文章推荐
Zend的MVC机制使用分析(二)
May 02 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
php中动态修改ini配置
Oct 14 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
php header函数的常用http头设置
Jun 25 PHP
Symfony生成二维码的方法
Feb 04 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
PHP如何防止用户重复提交表单
Dec 09 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字符串按照单词进行反转的方法
2015/03/14 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
python使用udp实现聊天器功能
2018/12/10 Python
sklearn的predict_proba使用说明
2020/06/28 Python
Python实现石头剪刀布游戏
2021/01/20 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
外企C语言笔试题
2013/11/10 面试题
几道数据库的概念性面试题
2014/05/30 面试题
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
行政助理岗位职责范文
2013/12/03 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
企业读书活动总结
2014/06/30 职场文书
Redis全局ID生成器的实现
2022/06/05 Redis