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 相关文章推荐
ajax取消挂起请求的处理方法
Mar 18 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
php实现的用户查询类实例
Jun 18 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
php简单实现单态设计模式的方法分析
Jul 28 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
Oct 03 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动态创建Web站点的方法
2011/08/14 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php获取apk包信息的方法
2014/08/15 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
改版了网上的一个js操作userdata
2007/04/27 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
大四自我鉴定范文
2013/10/06 职场文书
园林施工员岗位职责
2013/12/11 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
双创工作实施方案
2014/03/26 职场文书
10的分与合教学反思
2014/04/30 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
关于旅游的活动方案
2014/08/15 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers