Das Beispiel in diesem Artikel beschreibt die Lese- und C-Konfigurationsmethoden in thinkPHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
1. Öffentliche Konfiguration des Projekts
Conf/config.php
Der Inhalt ist wie folgt
<?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' bestimmt die zusätzlich zu ladende Konfiguration, diese Konfigurationen können über die C()-Methode gelesen werden und sind global gültig.
2. Wenn die Modulgruppierung aktiviert ist, können Sie für jede Gruppe separat eine Konfigurationsdatei definieren:
Projektkonfigurationsverzeichnis/Gruppenname/config.php
'APP_GROUP_LIST' => 'Home,Admin', //项目分组设定 'DEFAULT_GROUP' => 'Home', //默认分组
Nachdem nun die Home- und Admin-Gruppen definiert sind, können wir die Gruppenkonfigurationsdatei wie folgt definieren:
Conf/Home/config.php Conf/Admin/config.php
Die Konfigurationsdatei jeder Gruppe ist nur in der aktuellen Gruppe gültig. Das Definitionsformat der Gruppenkonfiguration ist das gleiche wie das der Projektkonfiguration.
Hinweis: Bei Gruppennamen wird die Groß-/Kleinschreibung beachtet und sie müssen mit dem definierten Gruppennamen übereinstimmen.
3. Lesen Sie die Konfiguration
Nachdem Sie die Konfigurationsdatei definiert haben, können Sie die vom System bereitgestellte C-Methode verwenden (wenn Sie das Gefühl haben, dass es seltsam ist, können Sie das Wort Config verwenden, um sich daran zu erinnern ), um die vorhandene Konfigurationsdatei zu lesen.
C('参数名称')//获取已经设置的参数值
Beispielsweise kann C('APP_STATUS') den Einstellungswert des Debug-Modus des Systems lesen. Da in den Konfigurationsparametern nicht zwischen Groß- und Kleinschreibung unterschieden wird, ist C('app_status') gleichwertig, es wird jedoch die Konvention in Großschreibung empfohlen.
Gibt NULL zurück, wenn APP_STATUS noch nicht existiert.
C-Methode kann auch zum Lesen zweidimensionaler Konfigurationen verwendet werden
C('USER_CONFIG.USER_TYPE')//获取用户配置中的用户类型设置
C-Methode liest globale Konfiguration und die Konfiguration des Stroms Modul.
Wenn kein Parameter vorhanden ist, werden alle gültigen Konfigurationen gelesen.
Wenn derselbe Konfigurationsname vorhanden ist, wird der vorherige Wert überschrieben.
Zum Beispiel:
'HTML_CACHE_TIME' => 60, //静态缓存有效期(秒) 'HTML_CACHE_TIME' => 80,
Das Endergebnis ist 80.
Die Ladesequenz basiert auf dem Parameter LOAD_EXT_CONFIG
'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay'
Zum Beispiel, wenn es einen Parameter HTML_CACHE_TIME in Info gibt, der 60 ist , aber nicht in anderen Konfigurationen, dann wird dieser Parameter als 60 angezeigt.
Wenn in der Datenbank auch HTML_CACHE_TIME 50 vorhanden ist, beträgt der Wert immer noch 60. Da die Informationen später gelesen werden, wird HTML_CACHE_TIME in der Datenbank überschrieben.
Im Anhang finden Sie den Quellcode der C-Methode
/** * 获取和设置配置参数 支持批量定义 * @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; // 避免非法参数 }
Ich hoffe, dass dieser Artikel für alle auf ThinkPHP basierenden PHP-Programmdesigns hilfreich sein wird Rahmen.
Ausführlichere Erläuterungen zu den in thinkPHP konfigurierten Lese- und C-Methoden finden Sie auf der chinesischen PHP-Website!