thinkPHP での設定の読み取りと C メソッドの解析

不言
リリース: 2023-03-31 10:02:01
オリジナル
1368 人が閲覧しました

この記事では主に thinkPHP の設定の読み取りと C メソッドを紹介し、thinkPHP 設定ファイルの機能、場所、グループ化、読み取り方法をサンプルの形式で分析します。

この記事の例では、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. モジュールのグループ化が有効な場合、グループごとに構成ファイルを個別に定義できます。

プロジェクト構成ディレクトリ/グループ。 name/config.php

&#39;APP_GROUP_LIST&#39; => &#39;Home,Admin&#39;, //项目分组设定
&#39;DEFAULT_GROUP&#39; => &#39;Home&#39;, //默认分组
ログイン後にコピー

Home と Admin の 2 つのグループが定義されたので、次のようにグループ構成ファイルを定義できます。

Conf/Home/config.php
Conf/Admin/config.php
ログイン後にコピー

#各グループの設定ファイルは現在のグループ内でのみ有効です。グループ設定の定義形式はプロジェクト設定と同じです。

注: グループ名では大文字と小文字が区別され、定義されたグループ名と一致している必要があります。

3. 設定を読みます

設定ファイルを定義した後、システムが提供する C メソッドを使用できます (奇妙に感じる場合は、既存の構成を読み取るには、Config word (記憶に役立つ) を使用します。

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 には 60 のパラメータ HTML_CACHE_TIME がありますが、他の設定にパラメータがない場合、このパラメータが読み取られます。出力されたときは 60 です。

データベースに HTML_CACHE_TIME 50 がある場合、値は 60 のままです。情報は後で読み取られるため、データベース内の 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; // 避免非法参数
}
ログイン後にコピー

##上記がこの記事の全内容です。ヘルプは、すべての人の学習に役立ちます。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

ThinkPHP の N メソッドの分析


# #

以上がthinkPHP での設定の読み取りと C メソッドの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート