(原创)Zend_Config_Writer的用法小结——对任意ini,xml文件进行修改
今天谈一谈zend框架下,修改ini文件的方法,当然不是php.ini了,更不是手动修改了,呵呵,而是zend框架中,利用程序修改自己写的ini配置文件。php原生的ini_set(),ini_get()只能对php.ini进行修改.
而想要对自己写的ini或者xml文件进行修改,以修改ini文件为例,以php提供的原生函数也不是不可能的事情,思路就是:和通常的修改文件特定字符串一样,先是读取文件内容,再找到目标字符串,利用str_replace()此类的函数进行修改,最后保存修改。这其中的如何准确查找字符串就令人很头疼。
而伟大的zend框架已经帮我们做好了这些工作,阅读它的源码你会发现它对上面过程进行了封装,我们直接提供一些简单的参数就哦了,是不是很强大?废话不多说了,直接上程序:
以通常的zend项目为例,一般application/configs文件夹下面有框架的application.ini。我在这里新建了一个settings.ini的文件,里面存储项目的一些配置信息。
settings.ini内容:
[settings]
front.language='zh_cn'
在你的action中:
1. $filename=APPLICATION_PATH.'/configs/settings.ini';//要修改的文件的位置
2. $config=new Zend_Config_Ini($filename,'settings',array('skipExtends' => true,
'allowModifications' => true));
/*这是读取ini文件的内容,第一个参数是文件名。
第二个参数是要读取的(修改的)的节名称,可以是数组,如果是null的话,就是指所有的节。第二个参数决定你下 面的修改时的写法
第三个参数是对加载情况进行描述的数组,allowModification=>true就是允许加载后修改,这是必须的*/
3.$config->front->language="en_us";//这是要修改的内容,把zh_cn改为了en_us
/*这里要注意,由于加载ini文件时候,就规定了是settings节,因此这里不要再写settings了,
如果上面第二个参数并没有指定是settings,那么就应该这样写:
$config->settings->front->language="en_us"*/
4. $writer=new Zend_Config_Writer_Ini(array('config'=>$config,
'filename'=>$filename));
//这句话很关键了,就是要进行修改ini文件,固定的写法。
5.$writer->write(); //最后执行修改操作
注意最后这两句话的写法,如果写出下面这样:
4.$writer=new Zend_Config_Writer_Ini();
5.$writer->write($filename,$config);
也是正确的
OK,到这里就完成了对ini文件的修改,至于修改xml文件用法相同。
注:已将文章从百度空间转移至博客园。欢迎大家多来园子逛逛。原文地址:http://hi.baidu.com/l_boye/item/31b438d54e349b1b2a35c735

浙公网安备 33010602011771号