Rumah > pembangunan bahagian belakang > tutorial php > PHP如何动态修改配置文件

PHP如何动态修改配置文件

不言
Lepaskan: 2023-03-31 13:44:02
asal
4715 orang telah melayarinya

这篇文章主要介绍了关于PHP如何动态修改配置文件,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

一个动态网站,一般都会有各种后台配置,如果配置量不多,单独设计一张表就显得有些浪费资源了

有些童鞋们喜欢将各种配置直接存储在项目中,想做到后台可以控制,就需要一套对配置文件做增删改查的操作方法了

不说废话直接让我们,哒~哒~哒~

新建一个 PHP 文件,命名为 Config.class.php,然后按照注释中的内容来使用就行~

/* 
* @link https://mkblog.cn/ 
* @author mengkun 
* @license MIT 
*/  

/** 
 * PHP 无数据库配置文件增删查改模块 
 * !注:本模块未对高并发进行优化兼容,如果数据量或并发过大,还是用数据库比较好 ? 
 *  
 * 使用方法: 
 *  
 * 一、引用本模块 
 *  
 *  require_once 'Config.class.php'; 
 *  
 *  
 * 二、初始化 
 *  
 *  $C = new Config('配置文件名');  // * 如果是在二级目录下,请确保该目录存在 
 *  
 *  
 * 三、内置方法 
 *  
 *  - 存储(如果已存在则是修改)单条数据 
 *  
 *      $C->set('sitename', '哒哒哒'); 
 *  
 *  
 *  - 存储(如果已存在则是修改)一个数组 
 *       
 *      $C->set('user', array('name'=>'peter', 'age'=>12)); 
 *  
 *  
 *  - 读取一条数据 
 *  
 *      $C->get('user', '默认值'); 
 *  
 *  
 *  - 删除一条数据 
 *  
 *      $C->delete('user'); 
 *  
 *  
 *  - 保存对数据的修改 
 *  
 *      $C->save();     // 保存成功返回 true,否则返回失败原因 
 *  
 *   
 * * 注:为了避免频繁地写文件,以上所有对数据的操作都必须调用一次 $C->save(); 才会真正被保存到配置文件中 
 *       建议将所有的数据操作都执行完后再进行存储操作。 
 *  
 *  
 * * 附:精简写法 
 *  
 *      $C->set('sitename', '哒哒哒')->save(); 
 */  

define(&#39;CONFIG_EXIT&#39;, &#39;<?php exit;?>&#39;);  
class Config {  
    private $data;  
    private $file;  

    /** 
     * 构造函数 
     * @param $file 存储数据文件 
     * @return  
     */  
    function __construct($file) {  
        $file = $file.&#39;.php&#39;;  
        $this->file = $file;  
        $this->data= self::read($file);  
    }  

    /** 
     * 读取配置文件 
     * @param $file 要读取的数据文件 
     * @return 读取到的全部数据信息 
     */  
    public function read($file) {  
        if(!file_exists($file)) return array();  

        $str = file_get_contents($file);  
        $str = substr($str, strlen(CONFIG_EXIT));  
        $data = json_decode($str, true);  
        if (is_null($data)) return array();  
        return $data;  
    }  

    /** 
     * 获取指定项的值 
     * @param $key 要获取的项名 
     * @param $default 默认值 
     * @return data 
     */  
    public function get($key = null, $default = &#39;&#39;) {  
        if (is_null($key)) return $this->data;  // 取全部数据  

        if(isset($this->data[$key])) return $this->data[$key];  
        return $default;  
    }  

    /** 
     * 设置指定项的值 
     * @param $key 要设置的项名 
     * @param $value 值 
     * @return null 
     */  
    public function set($key, $value) {  
        if(is_string($key)) {   // 更新单条数据  
            $this->data[$key] = $value;  
        } else if(is_array($key)) {   // 更新多条数据                 
            foreach ($this->data as $k => $v) {  
                if ($v[$key[0]] == $key[1]) {  
                    $this->data[$k][$value[0]] = $value[1];  
                }  
            }  
        }  

        return $this;  
    }  

    /** 
     * 删除并清空指定项 
     * @param $key 删除项名 
     * @return null 
     */  
    public function delete($key) {  
        unset($this->data[$key]);  

        return $this;  
    }  

    /** 
     * 保存配置文件 
     * @param $file 要保存的数据文件 
     * @return true-成功 其它-保存失败原因 
     */  
    public function save() {  
        if(defined(&#39;JSON_PRETTY_PRINT&#39;)) {  
            $jsonStr = json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);  
        } else {  
            $jsonStr = json_encode($this->data);  
        }  

        // 含有二进制或非utf8字符串对应检测  
        if(is_null($jsonStr)) return &#39;数据文件有误&#39;;  
        $buffer = CONFIG_EXIT.$jsonStr;  

        $file_strm = fopen($this->file, &#39;w&#39;);  
        if(!$file_strm) return &#39;写入文件失败,请赋予 &#39;.$file.&#39; 文件写权限!&#39;;  
        fwrite($file_strm, $buffer);  
        fclose($file_strm);  
        return true;  
    }  
}
Salin selepas log masuk
Salin selepas log masuk

代码截取来源mengken博客

一个动态网站,一般都会有各种后台配置,如果配置量不多,单独设计一张表就显得有些浪费资源了

有些童鞋们喜欢将各种配置直接存储在项目中,想做到后台可以控制,就需要一套对配置文件做增删改查的操作方法了

不说废话直接让我们,哒~哒~哒~

新建一个 PHP 文件,命名为 Config.class.php,然后按照注释中的内容来使用就行~

/* 
* @link https://mkblog.cn/ 
* @author mengkun 
* @license MIT 
*/  

/** 
 * PHP 无数据库配置文件增删查改模块 
 * !注:本模块未对高并发进行优化兼容,如果数据量或并发过大,还是用数据库比较好 ? 
 *  
 * 使用方法: 
 *  
 * 一、引用本模块 
 *  
 *  require_once &#39;Config.class.php&#39;; 
 *  
 *  
 * 二、初始化 
 *  
 *  $C = new Config(&#39;配置文件名&#39;);  // * 如果是在二级目录下,请确保该目录存在 
 *  
 *  
 * 三、内置方法 
 *  
 *  - 存储(如果已存在则是修改)单条数据 
 *  
 *      $C->set(&#39;sitename&#39;, &#39;哒哒哒&#39;); 
 *  
 *  
 *  - 存储(如果已存在则是修改)一个数组 
 *       
 *      $C->set(&#39;user&#39;, array(&#39;name&#39;=>&#39;peter&#39;, &#39;age&#39;=>12)); 
 *  
 *  
 *  - 读取一条数据 
 *  
 *      $C->get(&#39;user&#39;, &#39;默认值&#39;); 
 *  
 *  
 *  - 删除一条数据 
 *  
 *      $C->delete(&#39;user&#39;); 
 *  
 *  
 *  - 保存对数据的修改 
 *  
 *      $C->save();     // 保存成功返回 true,否则返回失败原因 
 *  
 *   
 * * 注:为了避免频繁地写文件,以上所有对数据的操作都必须调用一次 $C->save(); 才会真正被保存到配置文件中 
 *       建议将所有的数据操作都执行完后再进行存储操作。 
 *  
 *  
 * * 附:精简写法 
 *  
 *      $C->set(&#39;sitename&#39;, &#39;哒哒哒&#39;)->save(); 
 */  

define(&#39;CONFIG_EXIT&#39;, &#39;<?php exit;?>&#39;);  
class Config {  
    private $data;  
    private $file;  

    /** 
     * 构造函数 
     * @param $file 存储数据文件 
     * @return  
     */  
    function __construct($file) {  
        $file = $file.&#39;.php&#39;;  
        $this->file = $file;  
        $this->data= self::read($file);  
    }  

    /** 
     * 读取配置文件 
     * @param $file 要读取的数据文件 
     * @return 读取到的全部数据信息 
     */  
    public function read($file) {  
        if(!file_exists($file)) return array();  

        $str = file_get_contents($file);  
        $str = substr($str, strlen(CONFIG_EXIT));  
        $data = json_decode($str, true);  
        if (is_null($data)) return array();  
        return $data;  
    }  

    /** 
     * 获取指定项的值 
     * @param $key 要获取的项名 
     * @param $default 默认值 
     * @return data 
     */  
    public function get($key = null, $default = &#39;&#39;) {  
        if (is_null($key)) return $this->data;  // 取全部数据  

        if(isset($this->data[$key])) return $this->data[$key];  
        return $default;  
    }  

    /** 
     * 设置指定项的值 
     * @param $key 要设置的项名 
     * @param $value 值 
     * @return null 
     */  
    public function set($key, $value) {  
        if(is_string($key)) {   // 更新单条数据  
            $this->data[$key] = $value;  
        } else if(is_array($key)) {   // 更新多条数据                 
            foreach ($this->data as $k => $v) {  
                if ($v[$key[0]] == $key[1]) {  
                    $this->data[$k][$value[0]] = $value[1];  
                }  
            }  
        }  

        return $this;  
    }  

    /** 
     * 删除并清空指定项 
     * @param $key 删除项名 
     * @return null 
     */  
    public function delete($key) {  
        unset($this->data[$key]);  

        return $this;  
    }  

    /** 
     * 保存配置文件 
     * @param $file 要保存的数据文件 
     * @return true-成功 其它-保存失败原因 
     */  
    public function save() {  
        if(defined(&#39;JSON_PRETTY_PRINT&#39;)) {  
            $jsonStr = json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);  
        } else {  
            $jsonStr = json_encode($this->data);  
        }  

        // 含有二进制或非utf8字符串对应检测  
        if(is_null($jsonStr)) return &#39;数据文件有误&#39;;  
        $buffer = CONFIG_EXIT.$jsonStr;  

        $file_strm = fopen($this->file, &#39;w&#39;);  
        if(!$file_strm) return &#39;写入文件失败,请赋予 &#39;.$file.&#39; 文件写权限!&#39;;  
        fwrite($file_strm, $buffer);  
        fclose($file_strm);  
        return true;  
    }  
}
Salin selepas log masuk
Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

thinkphp常见路径的用法解析

PHPMailer ThinkPHP实现自动发送邮件功能

Atas ialah kandungan terperinci PHP如何动态修改配置文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Saya tidak berjaya menulis dengan guru
daripada 1970-01-01 08:00:00
0
0
0
Tetapan rujukan laluan PHP
daripada 1970-01-01 08:00:00
0
0
0
Tukar fail html kepada perkataan
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan