场景配置
配置目的:适应不同的开发环境,如我们在公司的数据库配置信息和家里办公的数据库配置信息不一致,此时采用该方法更快捷、高效。
- 在我们的配
- 何为场景配置? 场景配置是指我们不同的开发环境等情况,如我们在公司和家里的数据库配置不同,我们想要正常使用,就需要针对不同的环境去修改相应的配置。
- 场景配置的好处? 按照上述场景配置的定义,我们可以看出,在不同的开发环境中,我们需要修改不同的配置,这样带来的不好之处就是繁琐、效率低,同时有可能还会造成配置文件修改事物的情况。
- 如何实现场景配置
- 在项目的根目录下创建一个.env文件,配置如下内容,该内容只做参考使用,具体内容看你自己的情况。
status = home
[database]
hostname=127.0.0.1
database=home
username=root
password=123456
hostport=3306
- 我们将config目录下面的config.php文件中的配置状态改为home,如不存在该项配置,自行添加。
'app_status' => Env::get("status")// 这里的status便是.env文件中的status,一定的在该文件的第一行引入use think\Env;
- 接下来,在我们的config目录下面创建一个home.php的文件,填写如下内容。同样的这里指针对mysql的操作做配置,其他内容自行添加。
use think\Env;
// 下面读取的内容也是.env文件中定义的内容。
return [
"database" => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => Env::get("database.hostname"),
// 数据库名
'database' => Env::get("database.database"),
// 用户名
'username' => Env::get("database.username"),
// 密码
'password' => Env::get("database.password"),
// 端口
'hostport' => Env::get("database.hostport"),
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
],
];
- 按照同样的方式,我门可以配置一个office的环境,当我们需要修改环境的时候,直接修改.env文件中的status为office即可。
- 这里单独说一说Env类,在该配置方式中,多处用到该类。该类是框架核心类,使用use think\Env,可直接使用,该类的主要用处便是读取.env文件内容。当你仔细阅读上面的配置过程中,你会发现.env配置的数据库信息,当我们在不同的办公环境下,我们的数据库配置不同时,我们不仅要修改status的值,也需要修改database的值。这里有两个建议,一个是直接在我们的home.php和office.php配置文件中,将配置信息写死;第二个是,将.env文件中的内容配置为不同的格式,我们的home.php和office.php按照不同的方式去读取这两个配置文件即可。