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 foreach 参数强制类型转换的问题
Dec 10 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php模板函数 正则实现代码
Oct 15 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
php生成静态页面并实现预览功能
Jun 27 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 cron中的批处理
2008/09/16 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
php分页代码学习示例分享
2014/02/20 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
PHP7 新增功能
2021/03/09 PHP
js验证表单大全
2006/11/25 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Django进阶之CSRF的解决
2018/08/01 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
Python爬虫教程知识点总结
2020/10/19 Python
python装饰器代码深入讲解
2021/03/01 Python
兼职学生的自我评价
2013/11/24 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
求职自我评价范文
2015/03/09 职场文书
简单的辞职信模板
2015/05/12 职场文书