<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[读取4中配置的表信息,现支持php.ini,xml.yaml]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 01 Mar 2010 06:12:37 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/><br/><div class="code">&lt;?php<br/>/**<br/>* 读取4中配置的表信息,现支持php.ini,xml.yaml<br/>*/<br/>class Settings&#123;<br/>var $_settings = array();<br/>/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 获取某些设置的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;*<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @param unknown_type $var<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @return unknown<br/>&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function get($var) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var = explode(&#039;.&#039;, $var);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result = $this-&gt;_settings;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($var as $key) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!isset($result&#91;$key&#93;)) &#123; return false; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result = $result&#91;$key&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $result;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// trigger_error (&#039;Not yet implemented&#039;, E_USER_ERROR);//引发一个错误<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function load() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trigger_error (&#039;Not yet implemented&#039;, E_USER_ERROR);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/><br/>&#125;<br/>/**<br/>* 针对PHP的配置,如有配置文件<br/>* $file=<br/>&lt;?php<br/>$db = array();<br/><br/>// Enter your database name here:<br/>$db&#91;&#039;name&#039;&#93; = &#039;test&#039;;<br/><br/>// Enter the hostname of your MySQL server:<br/>$db&#91;&#039;host&#039;&#93; = &#039;localhost&#039;;<br/><br/>?&gt;<br/><br/><br/>具体调用:<br/>include (&#039;settings.php&#039;); //原始环境假设每个类为单独的一个类名.php文件<br/><br/>// Load settings (PHP)<br/>$settings = new Settings_PHP;<br/>$settings-&gt;load(&#039;config.php&#039;);<br/><br/>echo &#039;PHP: &#039; . $settings-&gt;get(&#039;db.host&#039;) . &#039;&#039;;<br/><br/>*<br/>*/<br/>Class Settings_PHP Extends Settings &#123;<br/>function load ($file) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (file_exists($file) == false) &#123; return false; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Include file<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include ($file);<br/>unset($file);&nbsp;&nbsp; //销毁指定变量<br/>$vars = get_defined_vars(); //返回所有已定义变量的列表,数组,变量包括服务器等相关变量,<br/>//通过foreach吧$file引入的变量给添加到$_settings这个成员数组中去.<br/>foreach ($vars as $key =&gt; $val) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($key == &#039;this&#039;) continue;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_settings&#91;$key&#93; = $val;<br/>&#125;<br/><br/>&#125;<br/><br/><br/><br/>&#125;<br/><br/><br/>//////////////////////读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组/////////////////////////////////////////<br/>/**<br/>* ini例子:<br/>* &#91;db&#93;<br/>name = test<br/>host = localhost<br/>调用例子:<br/>$settings = new Settings_INI;<br/>$settings-&gt;load(&#039;config.ini&#039;); <br/>echo &#039;INI: &#039; . $settings-&gt;get(&#039;db.host&#039;) . &#039;&#039;;<br/><br/>*<br/>*/<br/>Class Settings_INI Extends Settings &#123;<br/>function load ($file) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (file_exists($file) == false) &#123; return false; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_settings = parse_ini_file ($file, true);<br/>&#125;<br/>&#125;<br/><br/>//////////////////////读取XML文件,需要用到XML_PARSER//////////////////////////////////////////////////////////<br/>/**<br/>* XML例子:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br/>&lt;settings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;db&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;test&lt;/name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;host&gt;localhost&lt;/host&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/db&gt;<br/>&lt;/settings&gt;<br/>调用例子:<br/>// Load settings (XML)<br/>$settings = New Settings_XML;<br/>$settings-&gt;load(&#039;config.xml&#039;);<br/>echo &#039;XML: &#039; . $settings-&gt;get(&#039;db.host&#039;) . &#039;&#039;;<br/><br/>*<br/>*/<br/>Class Settings_XML Extends Settings &#123;<br/>function load ($file) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (file_exists($file) == false) &#123; return false; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**xmllib.php为PHP XML Library, version 1.2b,相关连接:http://keithdevens.com/software/phpxml<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmllib.php主要特点是把一个数组转换成一个xml或吧xml转换成一个数组<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML_unserialize:把一个xml给转换 成一个数组<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML_serialize:把一个数组转换成一个xml<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 自PHP5起,simpleXML就很不错,但还是不支持将xml转换成数组的功能,所以xmlLIB还是很不错的. <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include (&#039;xmllib.php&#039;);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml = file_get_contents($file);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $data = XML_unserialize($xml);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_settings = $data&#91;&#039;settings&#039;&#93;;<br/>&#125;<br/><br/>&#125;<br/>//////////////////////////////////读取YAML格式文件///////////////////////////////////////////////<br/>/**<br/>使用YAML必须使用到SPYC这个库,相关链接在http://spyc.sourceforge.net/<br/>YAML配置例子:<br/>db:<br/>&nbsp;&nbsp; name: test<br/>&nbsp;&nbsp; host: localhost <br/><br/><br/>*/<br/>Class Settings_YAML Extends Settings &#123;<br/>function load ($file) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (file_exists($file) == false) &#123; return false; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include (&#039;spyc.php&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_settings = Spyc::YAMLLoad($file);<br/>&#125;<br/>&#125;</div>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 读取4中配置的表信息,现支持php.ini,xml.yaml]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>