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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
一些PHP写的小东西
Dec 06 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
php使用百度天气接口示例
Apr 22 PHP
php的ZipArchive类用法实例
Oct 20 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 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 tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php导入模块文件分享
2015/03/17 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python列表计数及插入实例
2014/12/17 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Django中的ajax请求
2018/10/19 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
python多进程并发demo实例解析
2019/12/13 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
优秀团队获奖感言
2014/02/19 职场文书
安全生产活动月方案
2014/03/09 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
先进单位申报材料
2014/12/25 职场文书
周年庆典答谢词
2015/01/20 职场文书
债务纠纷起诉书
2015/05/20 职场文书
防震减灾主题班会
2015/08/14 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python