Maison  >  Article  >  développement back-end  >  Analyse de l'utilisation de la configuration dynamique du framework thinkPHP

Analyse de l'utilisation de la configuration dynamique du framework thinkPHP

不言
不言original
2018-06-14 11:47:192343parcourir

Cet article présente principalement l'utilisation de la configuration dynamique du framework thinkPHP et analyse les compétences d'opération de configuration dynamique avant thinkPHP3.0 et les précautions de fonctionnement liées au cache sous forme d'exemples. Les amis dans le besoin peuvent se référer aux exemples de ceci. article

Décrit l'utilisation de la configuration dynamique du framework thinkPHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Lorsque j'utilise @ThinkPHP pour construire un système récemment, je dois utiliser une fonction qui enregistre dynamiquement les paramètres de configuration du système dans un fichier de configuration. Dans le passé, lorsque nous construisions des systèmes, les paramètres de configuration du projet étaient directement écrits à l'avance dans le fichier Config/Config.php, puis appliqués dans le projet. Cependant, pour certains projets, les utilisateurs doivent définir dynamiquement les paramètres de configuration en arrière-plan en fonction de leurs propres circonstances. Généralement, nous avons deux manières de configurer ce type de paramètres dynamiques, l'une consiste à écrire dans la base de données et l'autre consiste à écrire dans le fichier de configuration. Aujourd'hui, je vais parler de l'utilisation des fichiers de configuration pour implémenter cette fonction.

1. Paramètre du fichier de configuration

Tout d'abord, nous créons un nouveau fichier de configuration sous le répertoire de configuration du projet TP Config et le nommons en définissant .config.php, ce fichier est utilisé pour enregistrer les paramètres dynamiques. Ensuite, fusionnez le setting.config.php dans le fichier de configuration principal du projet Config.php en fusionnant les tableaux. De cette façon, les paramètres de configuration dans setting.config.php peuvent être appelés tout au long du projet.

2. Implémenter les paramètres de gestion dynamique

En arrière-plan, créer une fonction qui setting.config.php La valeur par défaut est lue et affichée sous un formulaire. Cela peut être implémenté à l'aide de la fonction C de TP. Ensuite, vous pouvez définir la valeur de chaque paramètre du formulaire. Une fois le formulaire soumis et enregistré, les valeurs soumises par le formulaire sont traitées. Le code spécifique est le suivant :

La structure du fichier settings.config.php

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

L'opération de sauvegarde des paramètres de configuration

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

Fusionner les tableaux $a et $b ; sachez que la fonction

peut fusionner deux tableaux, et si les éléments du tableau ont le même nom de clé, la dernière valeur écrasera la valeur précédente (sauf le nom de clé numérique array_merge()

Ensuite, après avoir parcouru le); valeurs du tableau fusionné $c, générer le code du fichier 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文件;

À ce stade, les valeurs des paramètres de configuration du Le fichier

setting.config.php a été mis à jour ;

Il est vrai que le fichier écrit est un tableau, mais vous pouvez vous référer à la fonction

Il n'est pas nécessaire de boucler. le tableau! 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文件;

Le code ci-dessus peut être modifié en :

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

(La version Thinkphp3.1 prend déjà en charge les fonctions C pour enregistrer les valeurs des paramètres définis, cette méthode convient donc aux versions TP 3.0 et inférieures)

De plus, nous savons que

TP est dans le Lors d'une exécution unique, tous les fichiers de configuration, paramètres de configuration, etc. du projet seront générés dans un fichier cache d'exécution. Si nous mettons à jour le contenu de configfig, le fichier cache du projet doit être supprimé avant qu'il puisse prendre effet. . Pour cette raison, nous laissons le système vider le cache et mettre à jour les paramètres par lui-même. Le code est le suivant :

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

Supprimer le runtime_file ne suffit pas, vous devez effacer les fichiers dans le dossier Cache ; le code est le suivant :

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

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il vous sera utile. à l'apprentissage de tous. Pour plus de contenu connexe, veuillez prêter attention à PHP Chinese net !

Recommandations associées :

À propos du problème du chemin d'introduction du fichier thinkphp5.1

À propos du mécanisme de chargement automatique autoLoad de PHP Analyse

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn