gpt4 book ai didi

thinkPHP中配置的读取与C方法详解

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章thinkPHP中配置的读取与C方法详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了thinkPHP中配置的读取与C方法。分享给大家供大家参考,具体如下:

1.项目公共配置 。

Conf/config.php 。

内容如下 。

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

'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay' 确定加载的额外的配置,这些配置都可以通过C()方法读取,全局有效.

2.如果启用了模块分组,则可以在对每个分组单独定义配置文件,分组配置文件位于:

项目配置目录/分组名称/config.php 。

?
1
2
'APP_GROUP_LIST' => 'Home,Admin' , //项目分组设定
'DEFAULT_GROUP' => 'Home' , //默认分组

现在定义了Home和Admin两个分组,则我们可以定义分组配置文件如下:

?
1
2
Conf/Home/config.php
Conf/Admin/config.php

每个分组的配置文件仅在当前分组有效,分组配置的定义格式和项目配置是一样的.

注意:分组名称区分大小写,必须和定义的分组名一致.

3.读取配置 。

定义了配置文件之后,可以使用系统提供的C方法(如果觉得比较奇怪的话,可以借助Config单词来帮助记忆)来读取已有的配置 。

?
1
C( '参数名称' ) //获取已经设置的参数值

例如,C('APP_STATUS') 可以读取到系统的调试模式的设置值,同样,由于配置参数不区分大小写,因此C('app_status')是等效的,但是建议使用大写方式的规范.

如果APP_STATUS尚未存在设置,则返回NULL.

C方法同样可以用于读取二维配置 。

?
1
C( 'USER_CONFIG.USER_TYPE' ) //获取用户配置中的用户类型设置

C方法读取全局配置,以及当前模块的配置.

参数没有的话,将读取全部的有效配置.

如果存在相同的配置名,前面的值将被覆盖.

例如:

?
1
2
'HTML_CACHE_TIME' => 60, //静态缓存有效期(秒)
'HTML_CACHE_TIME' => 80,

最终获取的是80.

加载顺序依照参数LOAD_EXT_CONFIG 。

?
1
'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay'

比如info中有个参数HTML_CACHE_TIME 为60 ,其余配置中没有,那么这个参数读取出来就是60.

如果db中也有HTML_CACHE_TIME为50,那么值还是60。因为info是后读取的,把db中的HTML_CACHE_TIME覆盖掉了.

附上C方法源码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
  * 获取和设置配置参数 支持批量定义
  * @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( 'c_' . $value )) {
    $_config = array_merge ( $_config , array_change_key_case ( $array ));
   }
   return $_config ;
  }
  // 优先执行设置获取或赋值
  if ( is_string ( $name )) {
   if (! strpos ( $name , '.' )) {
    $name = strtolower ( $name );
    if ( is_null ( $value ))
     return isset( $_config [ $name ]) ? $_config [ $name ] : null;
    $_config [ $name ] = $value ;
    return ;
   }
   // 二维数组设置和获取支持
   $name = explode ( '.' , $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( 'c_' . $value , $_config );
   }
   return ;
  }
  return null; // 避免非法参数
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助.

最后此篇关于thinkPHP中配置的读取与C方法详解的文章就讲到这里了,如果你想了解更多关于thinkPHP中配置的读取与C方法详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com