> php教程 > PHP开发 > thinkPHP의 구성 읽기 및 C 메소드에 대한 자세한 설명

thinkPHP의 구성 읽기 및 C 메소드에 대한 자세한 설명

高洛峰
풀어 주다: 2016-12-30 09:35:33
원래의
1366명이 탐색했습니다.

이 기사의 예에서는 thinkPHP의 읽기 및 C 구성 방법을 설명합니다. 참고하실 수 있도록 모두와 공유해 주세요. 자세한 내용은 다음과 같습니다.

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;, //默认分组
로그인 후 복사

이제 홈 및 관리자 그룹이 정의되었으므로 다음과 같이 그룹 구성 파일을 정의할 수 있습니다.

Conf/Home/config.php
Conf/Admin/config.php
로그인 후 복사

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

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

3. 구성 읽기

구성 파일을 정의한 후 시스템에서 제공하는 C 방법을 사용할 수 있습니다. (이상하다고 느끼면 Config 단어를 사용하여 기억할 수 있습니다. )를 사용하여 기존 구성 파일을 읽을 수 있습니다. Configuration

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를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다. 뼈대.

thinkPHP에서 구성한 읽기 및 C 메소드에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿