[关闭]
@Chiang 2020-03-29T13:23:45.000000Z 字数 2976 阅读 608

配置文件管理类

doitphp 2020-03


常量,私有属性配置

  1. const PATH_FORMAT = 'path';
  2. const GET_FORMAT = 'get';
  3. /*
  4. * 视图格式
  5. *
  6. * @var string
  7. */
  8. const VIEW_EXT_HTML = '.html';
  9. const VIEW_EXT_PHP = '.php';
  10. /**
  11. * 项目配置文件内容临时存贮数组
  12. *
  13. * @var array
  14. */
  15. private static $_config = array();
  16. /**
  17. * 应用配置文件内容存贮数组
  18. *
  19. * @var array
  20. */
  21. private static $_data = array();
  22. /**
  23. * 类方法:loadConfig()调用状态。如果调用则为true,反之为false。
  24. *
  25. * @var boolean
  26. */
  27. private static $_isStart = false;

加载应用配置文件

public static function loadConfig($filePath = null)

  1. public static function loadConfig($filePath = null) {
  2. //判断本方法是否被调用过,如果调用过,则直接返回。
  3. if (self::$_isStart == true) {
  4. return true;
  5. }
  6. //获取应用配置文件内容默认值
  7. $defaultConfig = self::_getDefaultConfig();
  8. $config = array();
  9. //当配置文件路径存在时
  10. if ($filePath) {
  11. //分析配置文件是否存在
  12. if (!is_file($filePath)) {
  13. Response::halt('The configuration file: ' . $filePath . ' is not found!');
  14. }
  15. //获取应用配置文件内容
  16. include_once $filePath;
  17. //应用配置文件内容的默认值与配置文件值进行整合
  18. $config['application'] = (isset($config['application']) && is_array($config['application'])) ? $config['application'] + $defaultConfig : $defaultConfig;
  19. } else {
  20. $config['application'] = $defaultConfig;
  21. }
  22. self::$_data = $config;
  23. self::$_isStart = true;
  24. return true;
  25. }
  • 状态判断避免重复执行浪费
  • 调用默认配置方法
  • 加载配置文件
  • 合并加载的配置数组和默认的配置数组
  • 存储配置数组
  • 修改已加载标志

获取参数值

public static function get($key)

  1. public static function get($key) {
  2. //分析参数
  3. if (!$key) {
  4. return false;
  5. }
  6. if (strpos($key, '.') === false) {
  7. if (!isset(self::$_data[$key])) {
  8. return false;
  9. }
  10. return self::$_data[$key];
  11. }
  12. $keyArray = explode('.', $key);
  13. $value = false;
  14. if ($keyArray) {
  15. foreach ($keyArray as $keyId=>$keyName) {
  16. if ($keyId == 0) {
  17. if (!isset(self::$_data[$keyName])) {
  18. $value = false;
  19. break;
  20. }
  21. $value = self::$_data[$keyName];
  22. } else {
  23. if (!isset($value[$keyName])) {
  24. $value = false;
  25. break;
  26. }
  27. $value = $value[$keyName];
  28. }
  29. }
  30. }
  31. return $value;
  32. }
  • 这里的foreach用的很巧妙,配置多层参数都没有问题

获取项目配置文件内容

public static function getConfig($fileName)

  1. public static function getConfig($fileName) {
  2. //参数分析.
  3. if (!$fileName) {
  4. return false;
  5. }
  6. if (!isset(self::$_config[$fileName])) {
  7. $filePath = BASE_PATH . '/config/' . $fileName . '.php';
  8. //判断文件是否存在
  9. if (!is_file($filePath)) {
  10. Response::halt('The configuration file: ' . $fileName . '.php is not exists!');
  11. }
  12. $config = array();
  13. include_once $filePath;
  14. self::$_config[$fileName] = $config;
  15. }
  16. return self::$_config[$fileName];
  17. }
  • 加载项目配置文件

获取应用配置文件的默认值

private static function _getDefaultConfig()

  1. private static function _getDefaultConfig() {
  2. //定义变量$defaultConfig
  3. $defaultConfig = array();
  4. //设置应用目录(application)的路径
  5. $defaultConfig['basePath'] = APP_ROOT . '/application';
  6. //设置缓存目录的路径
  7. $defaultConfig['cachePath'] = APP_ROOT . '/cache';
  8. //设置日志目录的路径
  9. $defaultConfig['logPath'] = APP_ROOT . '/logs';
  10. //设置是否开启调试模式(开启后,程序运行出现错误时,显示错误信息,便于程序调试)
  11. $defaultConfig['debug'] = false;
  12. //设置日志写入功能是否开启
  13. $defaultConfig['log'] = false;
  14. //设置路由网址的重写模式是否开启
  15. $defaultConfig['rewrite'] = false;
  16. //设置路由网址格式(path:为url路由格式;get:为标准普通url格式)
  17. $defaultConfig['urlFormat'] = self::PATH_FORMAT;
  18. //设置路由分割符
  19. $defaultConfig['urlSegmentation'] = '/';
  20. //设置默认controller及action名
  21. $defaultConfig['defaultController'] = 'Index';
  22. $defaultConfig['defaultAction'] = 'index';
  23. //设置时区,默认时区为东八区(中国)时区(Asia/ShangHai)。
  24. $defaultConfig['defaultTimeZone'] = 'Asia/ShangHai';
  25. //设置视图文件的格式(php或html, 默认为php)
  26. $defaultConfig['viewExt'] = self::VIEW_EXT_PHP;
  27. return $defaultConfig;
  28. }
  • 配置文件默认值
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注