>  기사  >  백엔드 개발  >  thinkPHP에서 구성 읽기 및 C 메서드 구문 분석

thinkPHP에서 구성 읽기 및 C 메서드 구문 분석

不言
不言원래의
2018-06-09 14:33:021360검색

이 글에서는 thinkPHP의 구성 읽기 및 C 방법을 주로 소개하고, thinkPHP 구성 파일의 기능, 위치, 그룹화 및 읽기 방법을 예제 형식으로 분석합니다. 필요한 친구들이 참고할 수 있습니다

이 글에서는 예제를 설명합니다. C 메소드를 사용한 thinkPHP 구성 읽기에서. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

1. 프로젝트 공개 구성

Conf/config.php

내용은 다음과 같습니다

<?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'는 로드된 추가 구성을 결정하며 C() 메서드를 통해 읽을 수 있으며 전역적으로 유효합니다.

2. 모듈 그룹화가 활성화된 경우 각 그룹에 대해 별도로 구성 파일을 정의할 수 있습니다. 그룹 구성 파일은

프로젝트 구성 디렉터리/그룹 이름/config.php

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

에 있습니다. 지금 정의 Home과 Admin의 두 그룹을 사용하여 다음과 같이 그룹 구성 파일을 정의할 수 있습니다.

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

각 그룹의 구성 파일은 현재 그룹에서만 유효합니다. 그룹 구성의 정의 형식은 다음과 같습니다. 프로젝트 구성과 동일합니다.

참고: 그룹 이름은 대소문자를 구분하며 정의된 그룹 이름과 일치해야 합니다.

3. 구성 읽기

구성 파일을 정의한 후 시스템에서 제공하는 C 방법을 사용하면 됩니다(이상하다고 느끼면 Config 단어를 사용하면 기억하는데 도움이 됩니다). 구성

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

예를 들어 C('APP_STATUS')는 시스템 디버그 모드의 설정 값을 읽을 수 있습니다. 마찬가지로 구성 매개변수는 대소문자를 구분하지 않으므로 C('app_status')는 동일하지만 메소드의 사양은 대문자를 사용하는 것이 좋습니다.

APP_STATUS가 아직 설정되지 않은 경우 NULL을 반환합니다.

C 방법은 2차원 구성을 읽는 데에도 사용할 수 있습니다.

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

C 방법은 전역 구성과 현재 모듈의 구성을 읽습니다.

매개변수가 없으면 유효한 모든 구성을 읽습니다.

동일한 구성 이름이 존재할 경우 이전 값을 덮어쓰게 됩니다.

예:

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

최종 결과는 80입니다.

로딩 순서는 LOAD_EXT_CONFIG

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

매개변수를 기반으로 합니다. 예를 들어 info에 HTML_CACHE_TIME 매개변수가 60이지만 다른 구성에는 없으면 이 매개변수는 60으로 읽혀집니다.

DB에 HTML_CACHE_TIME 50도 있으면 값은 여전히 ​​60입니다. 정보는 나중에 읽기 때문에 db의 HTML_CACHE_TIME을 덮어씁니다.

첨부된 것은 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; // 避免非法参数
}

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 웹사이트!

관련 추천:

ThinkPHP의 N 방식 분석

위 내용은 thinkPHP에서 구성 읽기 및 C 메서드 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.