php以數組作爲配置文件的讀取和寫入操做

最近想用php開發個簡單的文章管理系統,主要是作一批垃圾採集站,目前網上的cms都太多功能了,致使修改個模板要不少文件,花費不少功夫。開始用thinkphp框架作,感受仍是麻煩,後來改用ci,作好了後臺後又以爲不是很簡潔
因而忠於狠下心來打算用原生的php開發一個,只有這樣才最簡潔。
其中遇到很多的問題,如今把一些關鍵技術點記錄下來,都是找來的資料

1、配置文件讀取
這個比較簡單 config.php -------------------------- <?php return array( 'a' => 1, 'b' => 2, 'c' => 3, ); ?> getconfig.php -------------------------- <?php $config = require('config.php'); print_r($config); ?> 你們試一下,會發現$config變量裏存儲了config.php中的數組, 這就是運用了php能夠把文件看成return函數的一種用法。

來個稍微複雜點的
config.php 
--------------------------
<?php
return array(
           'master'=>array(
                'master_host'=>'1',
                'master_name'=>'1',
                'master_password'=>'1',
                'master_port'=>'1',
                'slave1'=>array(
                    'slave_host'=>'2',
                    'slave_name'=>'2',
                    'slave_password'=>'2',
                    'slave_port'=>'2',
                ),
                  'slave2'=>array(
                    'slave_host'=>'3',
                    'slave_name'=>'3',
                    'slave_password'=>'3',
                    'slave_port'=>'3',
                ),
           ),
           'master1'=>array(
                'master_host'=>'5',
                'master_name'=>'5',
                'master_password'=>'5',
                'master_port'=>'5',
                'slave1'=>array(
                    'slave_host'=>'6',
                    'slave_name'=>'6',
                    'slave_password'=>'6',
                    'slave_port'=>'6',
                ),
                  'slave2'=>array(
                    'slave_host'=>'7',
                    'slave_name'=>'7',
                    'slave_password'=>'7',
                    'slave_port'=>'7',
                ),
           ),

);
getconfig.php
--------------------------
<?php
$config = require('config.php');
$config['db']['master']['host']= '';
$config['db']['master']['name']= '';
$config['db']['master']['password']= '';
$config['db']['master']['port']= '';
$config['db']['master']['slave1']['host']= '';
$config['db']['master']['slave1']['name']= '';
$config['db']['master']['slave1']['password']= '';
$config['db']['master']['slave1']['port']= '';
$config['db']['master']['slave2']['host']= '';
$config['db']['master']['slave2']['name']= '';
$config['db']['master']['slave2']['password']= '';
$config['db']['master']['slave2']['port']= '';


2、php 更新配置文件php

$config_file="路徑";
        if(file_exists($config_file)){
            $configs=include $config_file;
        }else {
            $configs=array();
        }
        $configs=array_merge($configs,$data);
        $result = file_put_contents($config_file, "<?php\treturn " . var_export($configs, true) . ";");

   var_export:輸出或返回一個變量的字符串表示thinkphp

     此函數返回關於傳遞給該函數的變量的結構信息,它和 var_dump() 相似,不一樣的是其返回的表示是合法的 PHP 代碼。數組

     能夠經過將函數的第二個參數設置爲 TRUE,從而返回變量的表示。php框架

另一種寫法框架

$path='路徑';//寫入路徑
                $file=include $path;
                $res = array_merge($file, array('key'=>$rolling));

                $str = '<?php return array(';
                foreach ($res as $key => $value){
                    // '\'' 單引號轉義
                    //$str .= '\''.$key.'\''.'=>'.'\''.$value.'\''.',';
                    if (is_array($value)){
                        $str.= '\''.$key.'\''.'=>array(';
                        foreach ($value as $k=>$v){
                            $str.='\''.$k.'\''.'=>'.'\''.$v.'\''.',';
                        }
                        $str.='),';
                    }else{
                        $str.='\''.$key.'\''.'=>'.'\''.$value.'\''.',';
                    }
                };
                $str .= '); ';
                $upfile =file_put_contents($path, $str);//寫入文件


 
複製代碼
相關文章
相關標籤/搜索