ホームページ >バックエンド開発 >PHPチュートリアル >thinkPHPフレームワークの動的構成の利用分析

thinkPHPフレームワークの動的構成の利用分析

不言
不言オリジナル
2018-06-14 11:47:192429ブラウズ

この記事では主に thinkPHP フレームワークの動的構成の使用法を紹介し、thinkPHP3.0 以前の動的構成の操作スキルとキャッシュ関連の操作の注意事項を例の形式で分析します。この記事の内容

thinkPHP フレームワークの動的構成の使用について説明します。参考までに皆さんにも共有してください。詳細は次のとおりです。

最近 @ThinkPHP を使ってシステムを構築する際、システムの構成パラメータを Config ファイルに動的に保存する機能を使用する必要があります。以前は、システムを構築する際に、事前にプロジェクトの構成パラメータを Config/Config.php ファイルに直接書き込んで、プロジェクトに適用していました。ただし、一部のプロジェクトでは、ユーザーは自分の状況に応じてバックグラウンドで構成パラメータを動的に設定する必要があります。一般に、この種の動的パラメータを構成するには 2 つの方法があります。1 つはデータベースに書き込む方法、もう 1 つは構成ファイルに書き込む方法です。今日は、この機能を設定ファイルの形式で実装する方法について説明します。

1. 構成ファイルの設定

まず、TP プロジェクト構成ディレクトリ Config の下に新しい構成ファイルを作成し、 という名前を付けます。 .config.php を設定すると、このファイルは動的パラメータを保存するために使用されます。次に、配列を結合して、setting.config.php をメイン プロジェクト構成ファイル 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( ) 関数は 2 つの配列をマージできます。配列要素のキー名が同じ場合、後の値が前の値を上書きします (数値キー名を除く)。マージされた配列 $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文件;

この時点で、

の構成パラメーターの値は、 settings.config.php

ファイルが更新されました;確かに書き込まれたファイルは配列ですが、

var_export

関数を参照する必要はありません。配列をループさせましょう!

$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文件;

上記のコードは次のように変更できます:

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

( Thinkphp3 バージョン 1 では、設定されたパラメーター値を保存するための C 関数がすでにサポートされているため、この方法は TP バージョン 3.0 以下に適しています)

さらに、

TP は最初に実行されることがわかっています。 time プロジェクトのすべての設定ファイル、設定パラメータなどがランタイム キャッシュ ファイルに生成されます。configig の内容を更新する場合、有効にする前にプロジェクト内のキャッシュ ファイルを削除する必要があります。このため、システムがキャッシュをクリアしてパラメーターを更新できるようにします。コードは次のとおりです。

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

runtime_file を削除するだけでは不十分です。キャッシュ フォルダー内のファイルをクリアする必要があります。コードは次のとおりです。

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

以上がこの記事の全内容です。皆さんの研究に役立つことを願っています。関連コンテンツの詳細については、PHP 中国語 Web サイトに注目してください。

関連推奨事項:

thinkphp5.1 ファイル導入パスの問題について

PHP の autoLoad 自動読み込み機構の解析について


以上がthinkPHPフレームワークの動的構成の利用分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。