CI框架动态更改配置文件
最近在使用CI框架开发一款DJ平台,主要是个人喜好,结合七牛云存储,将七牛云存储部分配置写入config目录下,在写入配置时遇到诸多问题,现将其记录下来。
前言:CI框架在一年前使用过,最近没有用他做过相应的开发,部分功能都已经忘记了,简单的看了看手册,同时最近想做一个DJ的平台,平台地址:dj.shenlin.ink,暂时处于开发中,待完成后会写一篇文章记录一下。
在平台设置中有一项名为“配置设置”,主要是用于设置七牛云存储的相关参数。主要有四个参数,并不想存数据库,有两个方面:数据量小、不方便(针对非开发人员),想将其写入配置文件中,在仔细查看了CI框架中的配置类后,本想使用set_items进行设置,后来发现此设置只是将配置写入内存中,并未更新到配置文件中。便换了一个写法。
首先,在配置文件目录config中新建一个配置文件(名称自定义即可)sevenOxen.php,用户储存配置参数。
<?php /** * 七牛云存储配置 */ $config['ak'] = '140'; //AccessKey $config['sk'] = '240'; //SecretKey $config['bucket'] = '350'; //存储空间名称 $config['domain'] = '450'; //域名
在控制器层读取配置,代码如下:
$this->config->load('sevenOxen'); $data['ak'] = $this->config->item('ak'); $data['sk'] = $this->config->item('sk'); $data['bucket'] = $this->config->item('bucket'); $data['domain'] = $this->config->item('domain');
在视图层修改配置并提交,代码略。
在控制器接收配置,并修改,代码如下:
/** * 保存配置 * @author 申霖 * @time 2019/8/26 0026 下午 10:34 */ public function data() { $ak = $this->input->post("ak"); $sk = $this->input->post("sk"); $bucket = $this->input->post("bucket"); $domain = $this->input->post("domain"); $config = array( 'ak' => '$config[\'ak\']', 'sk' => '$config[\'sk\']', 'bucket' => '$config[\'bucket\']', 'domain' => '$config[\'domain\']' ); //修改文件 $str = <<<php <?php /** * 七牛云存储配置 */ {$config['ak']} = '$ak'; //AccessKey {$config['sk']} = '$sk'; //SecretKey {$config['bucket']} = '$bucket'; //存储空间名称 {$config['domain']} = '$domain'; //域名 php; file_put_contents('./application/config/sevenOxen.php', $str); $data['code'] = 200; $data['msg'] = '保存成功'; echo json_encode($data); }
主要注意如下几点:
1、set_items动态设置配置没好用;
2、使用定界符时里面的变量需要使用 {} 包含起来;
3、需要做相应的代码转义,以代码配置文件代码效果;