yii2 配置文件加载顺序, 以及调用自定义配置信息。

在配置上一般有以下问题:

  1. 每个团队成员都会有自己的配置项,提交这样的配置项将会影响其他团队成员;
  2. 生产库密码和API密钥不应该出现在代码库中;
  3. 有多个服务器环境的情况:开发、测试、生产;每一种环境应该有自己的配置项;
  4. 每种情况都去定义所有的配置选项,是非常重复且要花大量时间去维护。

为了解决这些问题,yii引入了一种简单的环境概念。每一种环境被一套在environments目录中的文件所表示。init命令用于切换这些环境。它所做的就是从环境目录复制一切交给根目录下的所有应用程序

默认有2套环境:devprod。前者是开发环境,它包含所有的开发工具和调试启用;后者用于服务器部署,它的debug和开发工具都是关闭的。

典型的环境包含应用启动文件(比如index.php)和诸如以-local.php后缀的配置文件。这些或者是团队成员个人的配置(通常用于dev环境),或者是特定服务器的配置。比如,生产库链接就可能在prod环境的-local.php配置中。这些本地的配置文件被添加到.gitignore文件中,以至于不会被提交到源代码库中。

为了避免重复的配置覆盖对方,比如,frontend应用按以下的顺序读取配置:

  1. common/config/main.php
  2. common/config/main-local.php
  3. frontend/config/main.php
  4. frontend/config/main-local.php

Parameters按以下的顺序读取配置:

  1. common/config/params.php
  2. common/config/params-local.php
  3. frontend/config/params.php
  4. frontend/config/params-local.php

后面的配置文件会覆盖掉前面的配置文件

调用时,用以下命令,即可调用配置

yii\base\Application::params

该属性为一个数组,指定可以全局访问的参数,代替程序中硬编码的数字和字符,应用中的参数定义到一个单独的文件并随时可以访问是一个好习惯。 例如用参数定义缩略图的长宽如下:

[
    ‘params‘ => [
        ‘thumbnail.size‘ => [128, 128],
    ],
]

然后简单的使用如下代码即可获取到你需要的长宽参数:

$size = \Yii::$app->params[‘thumbnail.size‘];
$width = \Yii::$app->params[‘thumbnail.size‘][0];

这样就可以自定义一些参数,  或通过file_put_contents  来随时写入配置。

时间: 2024-12-15 01:38:27

yii2 配置文件加载顺序, 以及调用自定义配置信息。的相关文章

hadoop配置文件加载顺序

用了一段时间的hadoop,现在回来看看源码发现别有一番味道,温故而知新,还真是这样的 在使用hadoop之前我们需要配置一些文件,hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml.那么这些文件在什么时候被hadoop使用? 一般的在启动hadoop的时候使用最多就是start-all.sh,那么这个脚本都干了些什么? start-all.sh # Start all hadoop daemons. Run this on mas

shell脚本,配置文件加载顺序,以及什么时候加载。

在linux系统中,有/etc/profile,/etc/bashrc ,~/.bash_profile,~/bashrc这四个配置文件,这些文件,会自动的在某些时候加载,也就是点一下,一般都是些别名,特殊变量里面.四个有加载顺序,最先加载的是etc开头的/etc/profile,然后是/etc/.bashrc,有一些版本没有/etc/.bashrc了已经,这俩叫做全局的,然后会根据登陆的用户加载家目录下的profile bashrc.为什么要这么加载有原因?如果全局设定a=1,你的家目录自己设

Springboot配置文件加载顺序

使用Springboot开发的时候遇到了配置的问题,外部config里的配置文件本来没有配置https怎么启动还是https呢,原来开发中测试https在classpath路径的配置文件添加https的配置,最后打包jar,加载配置文件的时候由于config里面的配置文件没有配置https,就用classpath里面的配置了,在外部config把https关闭既可以(ssl.enabled=false),下面是Springboot加载配置文件的顺序,这里记录一下. Springboot从下面的位

struts2中配置文件加载的顺序是什么?

struts2的StrutsPrepareAndExecuteFilter拦截器中对Dispatcher进行了初始化 在Dispatcher类的init方法中定义了配置文件的加载顺序(下面是源码) public void init() { if (configurationManager == null) { configurationManager = createConfigurationManager(DefaultBeanSelectionProvider.DEFAULT_BEAN_NA

3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 先打包在进行测试 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 指定访问的路径 多个配置用空格分开: --配置项=值 -- 由jar包外向jar包

Spring Boot配置文件的加载顺序

配置文件的加载顺序, 后加载的会覆盖先加载的:也就是properties配置文件的内容会替换掉.yml及.yaml文件的内容 原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10849376.html

dubbo配置文件的加载顺序详解(图示)

Dubbo配置文件的加载顺序 ? 在使用apache dubbo.version2.7.3 时,配置文件的加载情况.以provider提供服务者为例. 配置文件 ,以下四个配置文件. 其优先级 application.properties #Dubbo config dubbo.application.name=boot-ego-user-service-provider dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protoc

java web项目启动加载顺序

web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转

(转载)web.xml 中的listener、 filter、servlet 加载顺序及其详解

首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.  但不会因为 filter 写在 listener 的前面而会先加载 filter.  最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息.我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是