thinkPHP 프레임워크의 동적 구성 사용 분석

不言
풀어 주다: 2023-04-01 07:12:02
원래의
2350명이 탐색했습니다.

이 글은 thinkPHP 프레임워크의 동적 구성 사용법을 주로 소개하고, thinkPHP3.0 이전의 동적 구성 작업 기술과 캐시 관련 작업 주의 사항을 예제 형식으로 분석합니다.

이 글에서는 다음을 설명합니다. 예제와 함께 thinkPHP 프레임워크의 동적 구성. 참고를 위해 모든 사람과 공유합니다. 세부 사항은 다음과 같습니다.

최근에 @ThinkPHP를 사용하여 시스템을 구축할 때 시스템 구성 매개변수를 Config 파일에 동적으로 저장하는 기능을 사용해야 합니다. 과거에는 시스템을 구축할 때 프로젝트 구성 매개변수를 Config/Config.php 파일에 미리 직접 기록한 후 프로젝트에 적용했습니다. 그러나 일부 프로젝트의 경우 사용자는 자신의 상황에 따라 백그라운드를 통해 구성 매개변수를 동적으로 설정해야 합니다. 일반적으로 이러한 종류의 동적 매개변수를 구성하는 방법에는 두 가지가 있습니다. 하나는 데이터베이스에 쓰는 것이고, 다른 하나는 구성 파일에 쓰는 것입니다. 오늘은 이 기능을 구현하기 위해 구성 파일을 사용하는 방법에 대해 이야기하겠습니다.

1. 구성 파일 설정

먼저 TP 프로젝트 구성 디렉터리 Config에 setting.config.php라는 새 구성 파일을 만듭니다. 이 파일은 동적 매개 변수를 저장하는 데 사용됩니다. 그런 다음 배열을 병합하여 프로젝트의 기본 구성 파일 Config.php에서 setting.config.php를 병합합니다. 이러한 방식으로 setting.config.php의 구성 매개변수를 전체 프로젝트에서 호출할 수 있습니다.

2. 동적 관리 매개변수 구현

백그라운드에서 setting.config.php의 기본값을 읽어서 양식에 표시하는 함수를 만듭니다. 이는 TP의 C 함수를 사용하여 구현할 수 있습니다. 그런 다음 양식의 각 매개변수 값을 설정할 수 있습니다. 양식을 제출하고 저장한 후 양식에서 제출한 값이 처리됩니다. 구체적인 코드는 다음과 같습니다.

setting.config.php 파일의 구조

<?php
return array(
  &#39;setting&#39;=>array(
    &#39;tel&#39; => &#39;400-088-7380&#39;,
        &#39;qq&#39;  => &#39;88888888&#39;,
        ......
    ),
);
?>
로그인 후 복사

저장 작업 구성 매개변수

function SaveSetting(){
//setting.config.php文件的路径,通过settingfile_path来设定;
$setfile=&#39;./Home&#39;.C(&#39;settingfile_path&#39;);
$a=C(&#39;setting&#39;); //将默认配置参数的内容赋值给$a;
$b=array(
  &#39;tel&#39; => $_POST[&#39;tel&#39;],
  &#39;web&#39; => $_POST[&#39;web&#39;],
  ........
);
//这里将新的参数值,通过后台的表单提交过来;
$c=array_merge($a,$b) ;
로그인 후 복사

배열 $a와 $b가 병합되었습니다. array_merge() 함수가 두 개의 배열을 병합할 수 있으며, 배열 요소의 키 이름이 동일한 경우 이후 값이 이전 값을 덮어씁니다(숫자 키 이름 제외) array_merge()函数,可以合并两个数组,并且如果数组元素具有相同的键名,后面的值会覆盖前面的值(数字键名除外);

然后,将合并后的数组$c的值进行遍历后,生成php文件代码;

$settingstr="<?php \n return array(\n&#39;Setting&#39; =>array(\n";
foreach($c as $key=>$v){
  $settingstr.= "\t&#39;".$key."&#39;=>&#39;".$v."&#39;,\n";
}
$settingstr.="),\n);\n?>\n";
file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;
로그인 후 복사

到此,setting.config.php文件的配置参数的值,已经被更新;

写入文件是个数组不假,但是可以参考一下var_export

그런 다음 병합된 배열 $c의 값을 순회한 후

$settingstr="<?php \n return array(\n&#39;Setting&#39; =>array(\n";
 foreach($c as $key=>$v){
  $settingstr.= "\t&#39;".$key."&#39;=>&#39;".$v."&#39;,\n";
 }
$settingstr.="),\n);\n?>\n";
file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;
로그인 후 복사

이 시점에서,

setting.config.php

파일의 구성 매개변수 값이 업데이트되었습니다.

작성된 파일이 배열인 것은 맞지만 var_export 함수를 참고하시면 됩니다. . 배열을 반복할 필요가 없습니다!

$settingstr = "<?php \n return array(\n&#39;Setting&#39; =>\n".var_export($c,true)." \n ?>";
file_put_contents($setfile,$settingstr); //通过file_put_contents保存
로그인 후 복사

위 코드는 다음과 같이 수정될 수 있습니다:

//RUNTIME_FILE常量是入口文件中配置的runtimefile的路径及文件名;
if(file_exists(RUNTIME_FILE)){
  unlink(RUNTIME_FILE); //删除RUNTIME_FILE;
}
로그인 후 복사

(Thinkphp3.1 버전은 이미 설정된 매개변수 값을 저장하는 C 함수를 지원하므로 이 방법은 TP 버전 3.0 이하에 적합합니다. )

또한

TP가 처음 실행될 때 프로젝트의 모든 구성 파일, 구성 매개변수 등이 포함된 런타임 캐시 파일을 생성한다는 것을 알고 있습니다. 프로젝트의 캐시 파일은

이후에 삭제되어야 합니다. 이러한 이유로 우리는 시스템이 캐시와 업데이트 매개변수를 자동으로 지우도록 했습니다. 코드는 다음과 같습니다.

$cachedir=RUNTIME_PATH."/Cache/";  //Cache文件的路径;
if ($dh = opendir($cachedir)) {   //打开Cache文件夹;
  while (($file = readdir($dh)) !== false) {  //遍历Cache目录,
       unlink($cachedir.$file);        //删除遍历到的每一个文件;
  }
  closedir($dh);
}
로그인 후 복사

runtime_file을 삭제하는 것만으로는 충분하지 않습니다. 캐시 폴더의 파일을 지워야 합니다

. 코드는 다음과 같습니다.

rrreee

위 이 글의 전체 내용입니다. 모든 분들께 도움이 되길 바랍니다. 학습에 도움이 될 것입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 추천:

thinkphp5.1 파일 도입 경로 문제에 대해

🎜🎜PHP의 autoLoad 자동 로딩 메커니즘 분석🎜🎜🎜🎜🎜🎜🎜🎜🎜

위 내용은 thinkPHP 프레임워크의 동적 구성 사용 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!