<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="分享一个完善的读写ini格式的PHP配置类" id="card1">
<p> 游客</p><p>
标题:分享一个完善的读写ini格式的PHP配置类<br/>
正文:<br/>
基本满足所有配置相关的需求。/** * 解析.ini格式的配置文件为一个树形结构的对象 * 配置文件不同section通过冒号继承 * 默认根据hostname确定使用的section，如果不能确定就优先使用production * 检测环境的时候总是优先检测production，其余section按定义顺序检测 * * @author ares@phpdr.net *     */class Config { /** * 解析后的配置文件 * * @var stdClass */ private $config; /** * 一个二维数组，键是配置文件的section * 值是一个数组或回调函数 * 如果是数组则计算hostname是否在数组中决定是否使用该section * 如果是回调函数通过返回值true或false来确定是否使用该section * * @var array */ private $map = array ();  /** * section会被解析，:表示继承 * 配置项中的'.'用来区分层级关系 * section中的'.'不会被解析，配置中的数组不受影响。 * * @param string $conf      * @throws ErrorException * @return stdClass */ function __construct($conf, $map) { $config = $this-&amp;gt;parseIni ( ( object ) parse_ini_string ( $conf, true ) ); if (array_key_exists ( 'production', $map )) {  $production = $map ['production'];  unset ( $map ['production'] );  $map = array_merge ( array (   'production' =&amp;gt; $production ), $map ); } else {  throw new ErrorException ( 'production section not found in config' ); } $section = 'production'; $hostname = <br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2093&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2093&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2093&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2093&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2093&amp;Page=5">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2093">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2093">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>