ThinkPHP公共配置文件与各自项目中配置文件组合的方法

下面是“ThinkPHP公共配置文件与各自项目中配置文件组合的方法”的攻略:

一、ThinkPHP公共配置文件

ThinkPHP公共配置文件放在/thinkphp/library/think/config.php目录下,这个文件中定义了大量的全局的配置项,比如:

return [
    'app_debug'              => false,
    'app_trace'              => false,
    'default_lang'           => 'zh-cn',
    'default_return_type'    => 'html',
    'http_exception_template'=> [],
    'show_error_msg'         => false,
    // ...其它配置项
];

上述配置文件中return数组中的键值即为配置项,每个配置项都有一个默认值,当你需要进行更改时,只需要在项目配置文件中加入对应的项即可覆盖默认值。

二、各自项目中的配置文件

ThinkPHP的项目配置文件为/application/config.php,同样也是一个return数组,可以覆盖公共配置文件中的设置。例如:

return [
    // 数据库配置信息
    'database'        => [
        // 数据库类型
        'type'            => 'mysql',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => 'testdb',
        // 数据库用户名
        'username'        => 'root',
        // 数据库密码
        'password'        => '',
        // 数据库编码默认采用utf8
        'charset'         => 'utf8',
        // 数据库表前缀
        'prefix'          => 'think_',
    ],
    'url_route_on'    => true,
    'url_route_must'  => false,
    // ...其它配置项
];

上述配置文件为数据库配置,覆盖了公共配置文件中的database配置项。当我们在代码中使用了数据库时,系统会默认获取这里的配置信息。

三、公共配置文件与项目配置文件组合方法

对于公共配置文件和项目配置文件,我们既可以分别用于存放不同的配置项,也可以对公共配置文件进行一些扩展,比如:

1. 合并公共配置文件和项目配置文件

当你希望公共配置文件中的某个项对所有项目都适用,但是某个项目有一些自定义配置时,可以合并这两个配置文件。方法如下:

// 引入公共配置文件
$public_config = include '/thinkphp/library/think/config.php';
// 引入当前项目配置文件
$site_config = include '/application/config.php';
// 合并两个数组
return array_merge($public_config, $site_config);

2. 使用环境变量

为了方便不同环境的配置,可以使用环境变量,例如:

return [
    'database'      => [
        'type'          => 'mysql',
        'hostname'      => getenv('DB_HOST') ?: '127.0.0.1',
        'database'      => getenv('DB_NAME') ?: 'testdb',
        'username'      => getenv('DB_USER') ?: 'root',
        'password'      => getenv('DB_PASS') ?: '',
        'prefix'        => 'think_',
        'charset'       => 'utf8',
    ],
    // ...其它配置项
];

上述代码中使用了getenv()函数读取了系统中的环境变量,如果环境变量不存在,使用默认值。

四、示例说明

下面以具体的示例说明公共配置文件与项目配置文件的用法:

1. 合并公共配置文件和项目配置文件

例如你有3个不同的项目,需要分别配置:

公共配置文件

// thinkphp/library/think/config.php
return [
    'app_debug'              => false,
    'app_trace'              => false,
    'default_lang'           => 'zh-cn',
    'default_return_type'    => 'html',
    'http_exception_template'=> [],
    'show_error_msg'         => false,
];

项目A的配置文件

// application/config.php
return [
    'database'      => [
        'type'          => 'mysql',
        'hostname'      => '127.0.0.1',
        'database'      => 'testa',
        'username'      => 'root',
        'password'      => '',
        'prefix'        => 'think_',
        'charset'       => 'utf8',
    ],
];

项目B的配置文件

// application/config.php
return [
    'database'      => [
        'type'          => 'mysql',
        'hostname'      => '127.0.0.1',
        'database'      => 'testb',
        'username'      => 'root',
        'password'      => '',
        'prefix'        => 'think_',
        'charset'       => 'utf8',
    ],
];

项目C的配置文件

// application/config.php
return [
    'database'      => [
        'type'          => 'mysql',
        'hostname'      => '127.0.0.1',
        'database'      => 'testc',
        'username'      => 'root',
        'password'      => '',
        'prefix'        => 'think_',
        'charset'       => 'utf8',
    ],
];

然后我们在项目的入口文件/public/index.php中引用配置文件:

// 引入公共配置文件
$config_public = include '../thinkphp/library/think/config.php';
// 引入当前项目配置文件
$config_site = include '../application/config.php';
// 合并两个配置文件
$config = array_merge($config_public, $config_site);

// 前面已经定义了常量APP_PATH了,所以这里使用define更改CONFIG_PATH
define('CONFIG_PATH', APP_PATH . "config/");

// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

这样,在不同的项目中,我们依然可以使用公共配置文件中的配置项,也可以在自己的配置文件中添加项目的特有配置项。

2. 使用环境变量

例如,在开发环境和生产环境中,你的数据库配置不一样:

公共配置文件

// thinkphp/library/think/config.php
return [
    // 其它配置项
    'database'      => [
        'type'          => 'mysql',
        'hostname'      => getenv('DB_HOST') ?: '127.0.0.1',
        'database'      => getenv('DB_NAME') ?: 'test',
        'username'      => getenv('DB_USER') ?: 'root',
        'password'      => getenv('DB_PASS') ?: '',
        'prefix'        => 'think_',
        'charset'       => 'utf8',
    ],
];

环境变量的设置方式可以参考操作系统的文档。在这里,我们假设在开发环境下,环境变量设置如下:

export DB_HOST=127.0.0.1
export DB_NAME=test_dev
export DB_USER=root
export DB_PASS=123456

在生产环境下,环境变量的值可以通过配置文件进行设置,例如:

export DB_HOST=example.com
export DB_NAME=test_prod
export DB_USER=admin
export DB_PASS=abcdef

然后,在框架的入口文件/public/index.php中引用配置文件,配置文件中的getenv()函数会获取系统中的环境变量:

// 引入公共配置文件
$config_public = include '../thinkphp/library/think/config.php';
// 引入当前项目配置文件
$config_site = include '../application/config.php';
// 合并两个配置文件
$config = array_merge($config_public, $config_site);

// 前面已经定义了常量APP_PATH了,所以这里使用define更改CONFIG_PATH
define('CONFIG_PATH', APP_PATH . "config/");

// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

这样,在不同环境中,我们可以使用相同的代码,只需要在不同的环境中设置一下环境变量或者修改配置文件中的默认值即可。

阅读剩余 79%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ThinkPHP公共配置文件与各自项目中配置文件组合的方法 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 使用wpa_supplicant连接wifi

    以下是关于使用wpa_supplicant连接wifi的完整攻略,包括基本概念、步骤和两个示例说明。 基本概念 wpa_supplicant是一个用于连接wifi的开源软件,它支持多种加密方式,如WPA、WPA2、802.1X等。wpa_supplicant可以在Linux、Unix、Windows和其他操作系统运行。 步骤 以下是使用wpa_supplic…

    other 2023年5月7日
    00
  • 内存不够不用怕! 虚拟内存不足的十种解决办法

    内存不够不用怕!虚拟内存不足的十种解决办法 当你的计算机内存不足时,虚拟内存可以帮助你扩展可用内存的容量。虚拟内存是一种将硬盘空间用作临时存储的技术,它可以将部分数据从内存转移到硬盘上,以释放内存空间供其他程序使用。以下是十种解决虚拟内存不足问题的方法: 增加物理内存:最直接的解决方法是增加计算机的物理内存。更多的内存意味着更多的可用空间,可以减少对虚拟内存…

    other 2023年8月1日
    00
  • vue的重点8:slice()、splice()、split()、join()详解

    在Vue中,slice()、splice()、split()、join()是常用的数组和字符串方法。下面是这些方法的详细攻略: slice() slice()方法用于从数组中提取指定的元素。它不会修改原始数组,而是返回一个新的数组,包含从开始到结束(不包括结束)的元素。下面是一个示例: const fruits = [‘apple’, ‘banana’, ‘…

    other 2023年5月8日
    00
  • node.js的国内源

    Node.js的国内源的完整攻略 Node.js是一种流行的JavaScript运行环境,它可以用于开发服务器端应用程序和命令行工具。在中国大陆地区,由于网络环境的限制,使用官方源下载Node.js可能会比较慢或者失败。因此,本文将提供一个完整攻略,介绍Node.js的国内源及其使用方法,并提供两个示例说明。 Node.js的国内源 Node.js的国内源包…

    other 2023年5月8日
    00
  • lm&&ntlm&&ophcrack&&rainbowtable

    lm&&ntlm&&ophcrack&&rainbowtable攻略 lm、ntlm、ophcrack和rainbowtable都是与密码破解相关的概念。本文将提供一个完整攻略,介绍这些概念的含义、使用方法和注意事项,并提供两个示例说明。 lm和ntlm lm和ntlm是Windows操作系统中使用的种密码哈希…

    other 2023年5月8日
    00
  • 带你了解C++的数组与函数

    当我们编写C++程序时,数组和函数是两个非常重要的主题。这篇文章会带你深入了解C++中的数组和函数。我们将从以下几个方面展开对这两个主题的讲解: 什么是数组?为什么使用数组? 如何声明和使用数组? 数组的常见操作-访问、修改、遍历和排序 什么是函数?为什么使用函数? 如何声明和使用函数? 两个示例说明 什么是数组?为什么使用数组? 数组是一组具有相同数据类型…

    other 2023年6月25日
    00
  • Android 常见的图片加载框架详细介绍

    Android 常见的图片加载框架详细介绍 一、前言 在开发 Android 应用程序中,图片的处理是很重要的一方面。在一些复杂的应用场景,比如列表显示多张图片等,我们需要使用到图片加载框架来做图片的异步加载、缓存、压缩等操作。目前市面上有很多优秀的图片加载框架,本文将会详细介绍以下常见的图片加载框架:Glide、Picasso、Fresco、Univers…

    other 2023年6月25日
    00
  • 详解Xcode编译选项功能

    详解Xcode编译选项功能 什么是Xcode编译选项 Xcode编译选项是用来进行构建iOS或macOS应用程序的配置设置。它可以用于更改应用程序的构建设置,优化构建流程,处理构建标志等。 如何打开Xcode编译选项 打开Xcode工程 选择Xcode顶部菜单栏中的 “Product” > “Scheme” > “Edit Scheme”。 在 …

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部