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( 'setting'=>array( 'tel' => '400-088-7380', 'qq' => '88888888', ...... ), ); ?>
L'opération de sauvegarde des paramètres de configuration
function SaveSetting(){ //setting.config.php文件的路径,通过settingfile_path来设定; $setfile='./Home'.C('settingfile_path'); $a=C('setting'); //将默认配置参数的内容赋值给$a; $b=array( 'tel' => $_POST['tel'], 'web' => $_POST['web'], ........ ); //这里将新的参数值,通过后台的表单提交过来; $c=array_merge($a,$b) ;
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()
$settingstr="<?php \n return array(\n'Setting' =>array(\n"; foreach($c as $key=>$v){ $settingstr.= "\t'".$key."'=>'".$v."',\n"; } $settingstr.="),\n);\n?>\n"; file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;
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'Setting' =>array(\n"; foreach($c as $key=>$v){ $settingstr.= "\t'".$key."'=>'".$v."',\n"; } $settingstr.="),\n);\n?>\n"; file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;
$settingstr = "<?php \n return array(\n'Setting' =>\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 queTP 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); }
À 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!