Maison  >  Article  >  développement back-end  >  Lecture de la configuration dans thinkPHP et analyse de la méthode C

Lecture de la configuration dans thinkPHP et analyse de la méthode C

不言
不言original
2018-06-09 14:33:03951parcourir

Cet article présente principalement la méthode de lecture et de configuration C dans thinkPHP, et analyse la fonction, l'emplacement, le regroupement et la méthode de lecture du fichier de configuration thinkPHP sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Les exemples de cet article décrivent les méthodes de lecture et de configuration C dans thinkPHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1. Configuration publique du projet

Conf/config.php

Le contenu est le suivant

<?php
/**
 *项目公共配置
 *@package
 *@author
 **/
return array(
 &#39;LOAD_EXT_CONFIG&#39;   => &#39;db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay&#39;,  
 &#39;APP_AUTOLOAD_PATH&#39;  => &#39;@.ORG&#39;,
 &#39;OUTPUT_ENCODE&#39;   => true,    //页面压缩输出
 &#39;PAGE_NUM&#39;    => 15,
 /*Cookie配置*/
 &#39;COOKIE_PATH&#39;   => &#39;/&#39;,    // Cookie路径
 &#39;COOKIE_PREFIX&#39;   => &#39;&#39;,    // Cookie前缀 避免冲突
 /*定义模版标签*/
 &#39;TMPL_L_DELIM&#39;   =>&#39;{sh:&#39;,   //模板引擎普通标签开始标记
 &#39;TMPL_R_DELIM&#39;   =>&#39;}&#39;,    //模板引擎普通标签结束标记
 &#39;TMPL_CACHE_ON&#39;   => false,   //关闭模板缓存
 &#39;DEFAULT_GROUP&#39;   => &#39;Home&#39;,   //默认访问分组,设置默认入口
 &#39;APP_GROUP_LIST&#39;  => &#39;Agent,Home,System,User,Store,Wap,Mall,Opener&#39;,  // 项目分组设定,多个组之间用逗号分隔,例如&#39;Home,Admin&#39;
 &#39;PUBLIC_RESOURSE&#39;  => &#39;./Public/&#39;,
 &#39;URL_404_REDIRECT&#39;  => &#39;./Tpl/404.html&#39;,
);
?>

'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms, platform,store,pay' Détermine la configuration supplémentaire chargée. Ces configurations peuvent être lues via la méthode C() et sont globalement valides.

2. Si le regroupement de modules est activé, vous pouvez définir un fichier de configuration pour chaque groupe séparément. Le fichier de configuration de regroupement se trouve dans :

Répertoire/groupe de configuration du projet. name/ config.php

&#39;APP_GROUP_LIST&#39; => &#39;Home,Admin&#39;, //项目分组设定
&#39;DEFAULT_GROUP&#39; => &#39;Home&#39;, //默认分组

Maintenant que deux groupes, Accueil et Admin, sont définis, nous pouvons définir le fichier de configuration du groupe comme suit :

Conf/Home/config.php
Conf/Admin/config.php

Le fichier de configuration de chaque groupe n'est valable que dans le groupe actuel. Le format de définition de la configuration du groupe est le même que celui de la configuration du projet.

Remarque : Le nom du groupe est sensible à la casse et doit être cohérent avec le nom du groupe défini.

3. Lisez la configuration

Après avoir défini le fichier de configuration, vous pouvez utiliser la méthode C fournie par le système (si vous vous sentez bizarre, vous pouvez utilisez le mot de configuration Pour aider la mémoire) pour lire la configuration existante

C(&#39;参数名称&#39;)//获取已经设置的参数值

Par exemple, C('APP_STATUS') peut lire les paramètres du mode débogage de la valeur du système, encore une fois, puisque les paramètres de configuration ne sont pas sensibles à la casse, C('app_status') est équivalent, mais la convention en majuscules est recommandée.

Renvoie NULL si APP_STATUS n'existe pas encore.

La méthode C peut également être utilisée pour lire la configuration bidimensionnelle

C(&#39;USER_CONFIG.USER_TYPE&#39;)//获取用户配置中的用户类型设置

La méthode C lit la configuration globale et le configuration du module actuel .

S'il n'y a aucun paramètre, toutes les configurations valides seront lues.

Si le même nom de configuration existe, la valeur précédente sera écrasée.

Par exemple :

&#39;HTML_CACHE_TIME&#39; => 60, //静态缓存有效期(秒)
&#39;HTML_CACHE_TIME&#39; => 80,

Le résultat final est 80.

L'ordre de chargement est selon le paramètre LOAD_EXT_CONFIG

&#39;LOAD_EXT_CONFIG&#39; => &#39;db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay&#39;

Par exemple, il y a un paramètre HTML_CACHE_TIME dans info qui vaut 60, mais il n'y a pas de paramètre dans d'autres configurations, alors ce paramètre Il indique 60.

S'il y a aussi HTML_CACHE_TIME 50 dans la base de données, la valeur est toujours 60. Étant donné que les informations sont lues plus tard, le HTML_CACHE_TIME dans la base de données est écrasé.

Ci-joint le code source de la méthode C

/**
 * 获取和设置配置参数 支持批量定义
 * @param string|array $name 配置变量
 * @param mixed $value 配置值
 * @return mixed
 */
function C($name=null, $value=null) {
 static $_config = array();
 // 无参数时获取所有
 if (empty($name)) {
  if(!empty($value) && $array = cache(&#39;c_&#39;.$value)) {
   $_config = array_merge($_config, array_change_key_case($array));
  }
  return $_config;
 }
 // 优先执行设置获取或赋值
 if (is_string($name)) {
  if (!strpos($name, &#39;.&#39;)) {
   $name = strtolower($name);
   if (is_null($value))
    return isset($_config[$name]) ? $_config[$name] : null;
   $_config[$name] = $value;
   return;
  }
  // 二维数组设置和获取支持
  $name = explode(&#39;.&#39;, $name);
  $name[0] = strtolower($name[0]);
  if (is_null($value))
   return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;
  $_config[$name[0]][$name[1]] = $value;
  return;
 }
 // 批量设置
 if (is_array($name)){
  $_config = array_merge($_config, array_change_key_case($name));
  if(!empty($value)) {// 保存配置值
   cache(&#39;c_&#39;.$value,$_config);
  }
  return;
 }
 return null; // 避免非法参数
}

Ce qui précède est l'intégralité du contenu de cet article, J'espère que cela sera utile à tout le monde. Utile, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !

Recommandations associées :

Analyse de la méthode N de ThinkPHP

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