2014-03-13 97 views
0

我想知道我們是否可以動態編輯配置文件。Kohana動態編輯配置文件

這是我的例子。

<?php 
// config/system.php 

return array(
    'data'=>"content", 
    'data1' => "content2", 
); 

?> 

我知道我們可以使用set()方法編輯它,但是此方法不會編輯文件。

例如:

<?php 

// get config file array 
$config = Kohana::$config->load('system'); 

// set the new config .. but this function doesn't edit the file ! 
$config->set("data","MyContent"); 

?> 

任何想法?

+0

我想它存儲在數據庫中。要麼編寫一些能夠編輯配置文件的類。 – AmazingDreams

+0

我使用一些配置文件來添加/刪除禁止的IP,並使用相同的配置文件與另一個身份驗證系統,這就是爲什麼我不想將它保存到數據庫中,我寫了一個腳本來做到這一點..我'將其作爲解決方案發布,也許這可以幫助別人 – zeomega

回答

4

最後我自己做了,也許這可以幫助別人。

1 - 創建APPPATH.'config/Group.php'並放置該腳本。

<?php defined('SYSPATH') OR die('No direct script access.'); 

// Save this file at APPPATH.'config/Group.php' 

// Extend the original Config_group 
class Config_Group extends Kohana_Config_Group { 

    // This function allow us to save on the config file 
    public function save() 
    { 
     $filename = APPPATH.'config'.DIRECTORY_SEPARATOR.$this->group_name().".php"; 

       // test if the config file is writable or not. 
     if (is_writable($filename)) 
     { 
         // save the array into the config file and return true/false 
      return (file_put_contents($filename, "<?php defined('SYSPATH') or die('No direct script access.');".PHP_EOL 
            ."return " . var_export($this->as_array(), true) . ";",LOCK_EX)); 
     } 

     return FALSE; 
    } 
} 

如何使用:

<?php 

// get config file array 
$config = Kohana::$config->load('system'); 

// set the new config .. but this function doesn't edit the file ! 
$config->set("data","MyContent"); 

// Save the new file config. 
$config->save(); 

?> 
+0

+1。我會使用數據庫壽,但這可以幫助一些1。 – helpse