Heim  >  Artikel  >  Backend-Entwicklung  >  Nutzungsanalyse der dynamischen Konfiguration des thinkPHP-Frameworks

Nutzungsanalyse der dynamischen Konfiguration des thinkPHP-Frameworks

不言
不言Original
2018-06-14 11:47:192343Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung der dynamischen Konfiguration des thinkPHP-Frameworks vorgestellt und die Vorkehrungen für dynamische Konfigurationsvorgänge vor thinkPHP3.0 und Cache-bezogene Vorkehrungen anhand von Beispielen analysiert Artikel

Beschreibt die Verwendung der dynamischen Konfiguration des thinkPHP-Frameworks. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Wenn ich kürzlich @ThinkPHP verwende, um ein System zu erstellen, muss ich eine Funktion verwenden, die die Systemkonfigurationsparameter dynamisch in einer Konfigurationsdatei speichert. In der Vergangenheit wurden beim Erstellen von Systemen die Projektkonfigurationsparameter vorab direkt in die Datei Config/Config.php geschrieben und dann im Projekt angewendet. Bei einigen Projekten müssen Benutzer jedoch Konfigurationsparameter entsprechend ihren eigenen Umständen dynamisch im Hintergrund festlegen. Im Allgemeinen haben wir zwei Möglichkeiten, diese Art von dynamischen Parametern zu konfigurieren: Eine besteht darin, in die Datenbank zu schreiben, und die andere darin, in die Konfigurationsdatei zu schreiben. Heute werde ich über die Verwendung von Konfigurationsdateien zur Implementierung dieser Funktion sprechen.

1. Einstellung der Konfigurationsdatei

Zuerst erstellen wir eine neue Konfigurationsdatei im TP-Projektkonfigurationsverzeichnis Config und nennen sie Einstellung .config.php, diese Datei wird zum Speichern dynamischer Parameter verwendet. Führen Sie dann die setting.config.php in die Hauptprojektkonfigurationsdatei Config.php ein, indem Sie Arrays zusammenführen. Auf diese Weise können die Konfigurationsparameter in setting.config.php im gesamten Projekt aufgerufen werden.

2. Implementieren Sie dynamische Verwaltungsparameter

Erstellen Sie im Hintergrund eine Funktion, die setting.config.php Der Standardwert wird ausgelesen und in einem Formular angezeigt. Dies kann mit der C-Funktion von TP implementiert werden. Anschließend können Sie den Wert jedes Parameters im Formular festlegen. Nachdem das Formular übermittelt und gespeichert wurde, werden die vom Formular übermittelten Werte wie folgt verarbeitet:

Die Struktur der Datei „setting.config.php“

<?php
return array(
  &#39;setting&#39;=>array(
    &#39;tel&#39; => &#39;400-088-7380&#39;,
        &#39;qq&#39;  => &#39;88888888&#39;,
        ......
    ),
);
?>

Der Vorgang zum Speichern von Konfigurationsparametern

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) ;

Führen Sie die Arrays $a und $b zusammen 🎜> Funktion kann zwei Arrays zusammenführen, und wenn Array-Elemente denselben Schlüsselnamen haben, überschreiben nachfolgende Werte vorherige Werte (außer numerische Schlüsselnamen);array_merge()

Dann, nach dem Durchlaufen der Werte des zusammengeführten Arrays $c, PHP-Dateicode generieren;

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

An diesem Punkt sind die Werte der Konfigurationsparameter der

Einstellung. config.php Datei wurde aktualisiert;

schreibt: Es stimmt, dass die Eingabedatei ein Array ist, aber Sie können auf die Funktion

verweisen. Es ist nicht erforderlich, das Array zu schleifen! 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文件;

Der obige Code kann wie folgt geändert werden:

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

( Thinkphp3. Version 1 unterstützt bereits C-Funktionen zum Speichern der eingestellten Parameterwerte, daher ist diese Methode für TP-Versionen 3.0 und niedriger geeignet)

Außerdem wissen wir, dass

TP für verwendet wird Beim ersten Ausführen werden alle Konfigurationsdateien, Konfigurationsparameter usw. des Projekts in einer Laufzeit-Cache-Datei generiert. Wenn wir den Inhalt von config aktualisieren, muss die Cache-Datei im Projekt gelöscht werden, bevor sie wirksam werden kann. Aus diesem Grund lassen wir das System den Cache löschen und die Parameter selbst aktualisieren. Der Code lautet wie folgt:

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

Das Löschen der runtime_file reicht nicht aus, Sie müssen die Dateien im Cache-Ordner löschen ; Der Code lautet wie folgt:

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

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Über das Problem des thinkphp5.1-Dateieinführungspfads

Über den automatischen Lademechanismus autoLoad von PHP Analyse

Das obige ist der detaillierte Inhalt vonNutzungsanalyse der dynamischen Konfiguration des thinkPHP-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn