이 글은 주로 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('CONFIG_EXIT', '<?php exit;?>'); class Config { private $data; private $file; /** * 构造函数 * @param $file 存储数据文件 * @return */ function __construct($file) { $file = $file.'.php'; $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 = '') { 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('JSON_PRETTY_PRINT')) { $jsonStr = json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); } else { $jsonStr = json_encode($this->data); } // 含有二进制或非utf8字符串对应检测 if(is_null($jsonStr)) return '数据文件有误'; $buffer = CONFIG_EXIT.$jsonStr; $file_strm = fopen($this->file, 'w'); if(!$file_strm) return '写入文件失败,请赋予 '.$file.' 文件写权限!'; fwrite($file_strm, $buffer); fclose($file_strm); return true; } }
코드 가로채기 소스 Mengken 블로그
다양한 백엔드 구성이 있는 경우가 많습니다. 구성이 많지 않으면 테이블만 디자인하는 것은 자원 낭비인 것 같습니다.
어떤 아이들은 이런 걸 좋아합니다. 다양한 구성을 프로젝트에 직접 저장하고 하고 싶다면 배경을 제어할 수 있기 때문에 구성 파일을 추가, 삭제, 수정, 확인하는 일련의 작업 방법이 필요합니다
말도 안 되는 소리 하지 마세요, 다~다~다~
새 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('CONFIG_EXIT', '<?php exit;?>'); class Config { private $data; private $file; /** * 构造函数 * @param $file 存储数据文件 * @return */ function __construct($file) { $file = $file.'.php'; $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 = '') { 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('JSON_PRETTY_PRINT')) { $jsonStr = json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); } else { $jsonStr = json_encode($this->data); } // 含有二进制或非utf8字符串对应检测 if(is_null($jsonStr)) return '数据文件有误'; $buffer = CONFIG_EXIT.$jsonStr; $file_strm = fopen($this->file, 'w'); if(!$file_strm) return '写入文件失败,请赋予 '.$file.' 文件写权限!'; fwrite($file_strm, $buffer); fclose($file_strm); return true; } }
위 내용은 이 글의 전체 내용입니다. 학습에 관한 더 많은 내용을 보려면 PHP 중국어 웹사이트를 주목하세요!
관련 권장사항:
PHPMailer ThinkPHP에서 자동 이메일 전송 기능을 구현한 일반 경로의 사용 분석
위 내용은 PHP에서 구성 파일을 동적으로 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!