php修改配置文件(ThinkPHP5.0)

在实际项目中,有的配置为动态变化,然而设计数据库会很麻烦效率又低,所以可以直接在配置文件中做考虑了。

框架:ThinkPHP5.0

框架默认配置文件目录为applocation/extra,在这里可以自定义配置文件。

/**
 * 修改扩展配置文件
 * @param array  $arr  需要更新或添加的配置
 * @param string $file 配置文件名(不需要后辍)
 * @param string $user 修改人
 * @return bool
 */
function extraconfig($arr = [], $file ,$user='admin')
{
    if (is_array($arr)) {
        $filename = $file . EXT;

        $filepath = APP_PATH . 'extra/' . $filename;



        if (!file_exists($filepath)  ) {

            if(!fopen($filepath, "w")){
                return 'PermissionError1';
            }
        }

        if (!is_writable($filepath)) {
            return 'PermissionError2';
        }

        $conf = include $filepath;
        foreach ($arr as $key => $value) {
            $conf[$key] = $value;
        }

        $time = date('Y/m/d H:i:s');
        $str = "<?php\r\n/**\r\n * 由".$user."建立.\r\n * $time\r\n */\r\nreturn [\r\n";
        foreach ($conf as $key => $value) {
            if(is_array($value)){
                $str.="\t'$key'=>[";
                foreach ($value as $r) {
                    $str .= "'$r',";
                }
                $str = rtrim($str,',');
                $str .= ']'."\r\n";
            } else{
                $str .= "\t'$key' => '$value',";
                $str .= "\r\n";
            }


        }
        $str .= '];';
        $result = file_put_contents($filepath, $str);
        if($result){
            return 'success';
        } else {
            return $result;
        }

    } else {
        return 'error';
    }
}
//调用方法
public function setSeo(){

        $arr = array(
            'title'       => input('title'),
            'keywords'    => input('keywords'),
            'description' => input('description'),
        );

       
        $user='marhal';

        $result=extraconfig($arr,'seo',$user);

        if($result=='success'){
            $this->success('修改成功',url('seo/index'));
        }elseif($result=='error'){
            $this->error('修改失败,请重试');
        }
        elseif($result=='PermissionError'){
            $this->error('文件无权限,请联系管理员');
        }
    }

效果

<?php
/**
 * 由marhal建立.
 * 2019/03/04 14:28:55
 */
return [
   'title' => '我的网站',
   'keywords' => '我的网站怎么样',
   'description' => '嗯,还好',
];

 以上为简单的一位数组,二维数组的话可在原方法基础上进行修改拼接即可,示例:

$file='poster';
$user='marhal';
//这里的$data是一个二维数组,看着下面的最终效果自行思考是怎样的格式
if (is_array($data)) {


                $filename = $file . EXT;

                $filepath = APP_PATH . 'extra/' . $filename;

                if (!file_exists($filepath)  ) {
                    fopen($filepath, "w") or die($this->error('文件没有权限,请联系管理员'));
                }

                if (!is_writable($filepath)) {
                    $this->error('文件没有权限,请联系管理员');
                }

                $time = date('Y/m/d H:i:s');
                $str = "<?php\r\n/**\r\n * 由".$user."建立.\r\n * $time\r\n */\r\nreturn [\r\n";


                $str.="//文字设置\r\n";
                $str.="'title'=>[\r\n";
                foreach ($data['title'] as $key => $value) {

                    $str .= "\t'$key' => '$value',";
                    $str .= "\r\n";
                }
                $str .= '],'."\r\n";

                $str.="//二维码设置\r\n";
                $str.="'qrcode'=>[\r\n";
                foreach ($data['qrcode'] as $key => $value) {

                    $str .= "\t'$key' => '$value',";
                    $str .= "\r\n";
                }
                $str .= '],'."\r\n"."];";

                file_put_contents($filepath, $str);
            } else {
                $this->error('非法数据');
            }

x效果如下

<?php
/**
 * 由marhal建立.
 * 2019/03/04 14:28:55
 */
return [
  
    //文字设置
    'title'=>[
        'text'=>'以心逐物',
        'color'=>'#000000',
        'size'=>'48',
        'locate'=>5
    ],

    //二维码图片的位置
   'qrcode' => [
        'left' => 300,
        'top' => 1100,
        'stream' => 0,             //图片资源是否是字符串图像流
        'right' => 0,
        'bottom' => 0,
        'width' => 500,
        'height' => 500,
        'opacity' => 100    //透明度
    ],
];

猜你喜欢

转载自blog.csdn.net/qq_38157006/article/details/89952551
今日推荐