ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php以数组做为配置文件的读取和写入操作

2021-05-31 14:52:32  阅读:146  来源: 互联网

标签:slave 读取 配置文件 db master array php config


最近想用php开发个简单的文章管理系统,主要是做一批垃圾采集站,目前网上的cms都太多功能了,导致修改个模板要很多文件,花费很多功夫。开始用thinkphp框架做,感觉还是麻烦,后来改用ci,做好了后台后又觉得不是很简洁
于是忠于狠下心来打算用原生的php开发一个,只有这样才最简洁。
其中遇到不少的问题,现在把一些关键技术点记录下来,都是找来的资料

一、配置文件读取
这个比较简单 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']= '';


二、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:输出或返回一个变量的字符串表示

     此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。

     可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

另外一种写法

$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);//写入文件



复制代码







标签:slave,读取,配置文件,db,master,array,php,config
来源: https://blog.51cto.com/anlaoliu/2835256

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有