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 23 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
PHP json_decode函数详细解析
Feb 17 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
php除数取整示例
Apr 24 PHP
PHP里的单例类写法实例
Jun 25 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
融入意大利的咖啡文化
2021/03/03 咖啡文化
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
javascript multibox 全选
2009/03/22 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
幼儿园教师岗位职责
2014/03/17 职场文书
春节超市活动方案
2014/08/14 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
总经理聘用协议书
2015/09/21 职场文书
生活委员竞选稿
2015/11/21 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
导游词之无锡唐城
2019/12/12 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python