刘家三少爷

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

(原创)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

posted on 2013-07-07 15:49  刘家三少爷  阅读(177)  评论(0)    收藏  举报