Home  >  Article  >  Backend Development  >  Reading configuration in thinkPHP and parsing C method

Reading configuration in thinkPHP and parsing C method

不言
不言Original
2018-06-09 14:33:031000browse

This article mainly introduces the reading and C methods of configuration in thinkPHP, and analyzes the function, location, grouping and reading method of thinkPHP configuration file in the form of examples. Friends in need can refer to it

The examples in this article describe the reading and C methods of configuration in thinkPHP. Share it with everyone for your reference, the details are as follows:

1. Project public configuration

Conf/config.php

The content is as follows

<?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' Confirm loading Additional configurations, these configurations can be read through the C() method and are globally valid.

2. If module grouping is enabled, you can define a configuration file for each group separately. The grouping configuration file is located at:

Project configuration directory/group name/ config.php

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

Now that two groups, Home and Admin, are defined, we can define the group configuration file as follows:

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

The configuration file of each group is only valid in the current group. The definition format of the group configuration is the same as the project configuration.

Note: The group name is case-sensitive and must be consistent with the defined group name.

3. Read the configuration

After defining the configuration file, you can use the C method provided by the system (if you feel weird, you can use the Config word To help memory) to read the existing configuration

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

For example, C('APP_STATUS') can read the setting value of the system's debug mode, Again, since configuration parameters are not case-sensitive, C('app_status') is equivalent, but uppercase convention is recommended.

If APP_STATUS does not yet exist, return NULL.

C method can also be used to read two-dimensional configuration

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

C method reads global configuration and the configuration of the current module.

If there is no parameter, all valid configurations will be read.

If the same configuration name exists, the previous value will be overwritten.

For example:

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

The final result obtained is 80.

The loading sequence is based on the parameter LOAD_EXT_CONFIG

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

For example, there is a parameter HTML_CACHE_TIME in info that is 60, but there is no parameter in other configurations, then this parameter is read It's 60 when it comes out.

If there is HTML_CACHE_TIME 50 in the db, the value is still 60. Because info is read later, the HTML_CACHE_TIME in the db is overwritten.

Attached is the C method source code

/**
 * 获取和设置配置参数 支持批量定义
 * @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; // 避免非法参数
}

##The above is the entire content of this article, I hope it will be useful for everyone’s learning Help, please pay attention to the PHP Chinese website for more related content!

Related recommendations:

Analysis of N method of ThinkPHP

The above is the detailed content of Reading configuration in thinkPHP and parsing C method. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn