开发中是不允许改变框架的任何配置的,避免后期升级出现问题。惯例配置也就是默认配置。我们可以通过应用配置来修改。在config.php中修改即可修改整个应用的配置。可以添加新的项,或者修改默认的配置:使用默认配置中的名称,添加新的值即可将之前的覆盖掉。
在conf下新建config.php文件,里面设置内容对于app下各文件夹都有效。
里面如设置与惯例配置convention.php项内容相同,则覆盖原配置内容。
同一文件配置相同参数后面会覆盖前面。
thinkphp目录下的convention.php为系统默认配置
闪电发货
<?php
echo 'hello wole';
>
修改东西时应撰写在"应用配置"
不该修改在框架本身的"惯例配置"当中
2应用配置
如果需要修改配置项,则修改conf/config.php,在其中添加需要修改的配置项
若index(前台)和admin(后台)模块有共同的操作(执行的方法),即可在app下创建common(公用)模块。
若项目需要自定义或者修改TP默认的配置,则在app同级目录下创建conf文件夹,conf下创建config.php的文件。直接返回配置数组,如需添加或者修改某项配置,则直接在数组里面配置即可完成。
应用配置覆盖惯例配置原理,array_merge($arr1,$arr2),相同的键后面数组的值会覆盖前面的值
dump->打印
应用配置conf/config.php会替换默认(惯性)配置thinkphp.convention.php
//配置文件路径,注意 __DIR__.
define('CONF_PATH', __DIR__.'/../conf/');
若index(前台)和admin(后台)模块有共同的操作(执行的方法),即可在app下创建common(公用)模块。
若项目需要自定义或者修改TP默认的配置,则在app同级目录下创建conf文件夹,conf下创建config.php的文件。直接返回配置数组,如需添加或者修改某项配置,则直接在数组里面配置即可完成。
应用配置可以改变默认的惯例配置
1、若要改变整个app/下模块的配置就要在新建的conf/目录新建一个config.php文件。(文件名只能是config.php)
conf/config.php文件里返回一个数组:
<?php return [ 'app_email'=>'1024208436@qq.com', 'app_author'=>'june' ];
再从各模块里打印出 配置时就会在最底下加上这两个配置

若想要改变默认的惯例配置也可以在这个文件里加上同样的数组元素,如:改变应用调试模式
<?php return [ 'app_email'=>'342535@qq.com', 'app_author'=>'june', // 应用调试模式 'app_debug' => true, ];
那是如何实现这种配置加载的呢,如下:
public function demoConfig()//用来模拟应用配置会改变惯例配置案例
{
$conf1 = [//对应 惯例配置
'username'=>'juneXu',
];
$conf2 = [//对应 应用配置
'username'=>'june',
];
dump(array_merge($conf1,$conf2));//处理应用配置覆盖惯例配置
}最终显示

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
通过config.php可以修改惯例配置来为我们服务(因为惯例配置是框架自带文件,不建议修改),修改方法:如:return['app_debug'=>'ture','app_name'=>'nihao'];
原理是用到了array_merge()数组函数;
这个函数将一个或多个数组的单元合并起来如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。(这段代码执行的过程已经封装在框架内部了,我们修改的时候直接在config.php里return['aa'=>'bb']就行了)
在项目开发中,thinkphp文件夹下的框架文件不可以做任何修改,否则在后期升级维护的时候会带来许多的不便;
惯例配置是框架内自带的配置;
应用配置:
应用配置是我们要开发的项目的配置,专门为项目服务的,这个配置有我们自己来编写;
1.在public目录下的入口文件(app/public/index.php)加入如下代码:
defile('CONF_PATH',__DIR__ . '/../conf/');
2.在APP(应用目录)同一级下建conf文件夹并在此文件夹中建config.php文件(文件名必须为config.php);
可以config.php里面设置相应的配置(如:return['app_author'=>'zoro']);
这个config.php里的配置对所有模块都生效;在config.php里面设置的配置,通过打印config()助手函数,依然可以和惯例配置一起被打印出来;
通过config.php可以修改惯例配置来为我们服务(因为惯例配置是框架自带文件,不建议修改),修改方法:如:return['app_debug'=>'ture','app_name'=>'nihao'];
原理是用到了array_merge()数组函数;
这个函数将一个或多个数组的单元合并起来如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。(这段代码执行的过程已经封装在框架内部了,我们修改的时候直接在config.php里return['aa'=>'bb']就行了)
查惯例配置
在APP模块文件(如index(模块文件名)/Index(类名)/index.php)中写
dump(config());在浏览就可以看惯例配置,惯例文件是在thinkphp框架文件夹中的convention.php
新建一个跟app同级的conf文件夹,在下一层新建一个config.php文件,问文件里的代码为<?php return [ 'app_email' =>'111111' ];
框架文件不可以做任何修改,否则在后期升级版本的时候会带来许多的不便
【thinkphp文件夹】。
array_merge($conf1, $conf2) key相同合并,不同共存。
应用配置
版本更新了,没有config文件夹了,直接在app\config.php文件中修改相关配置,
thinkphp/convention.php=>惯例配置(全局有效);
application/config.php=>应用配置(应用内生效,优先级>惯例配置);
extra/***.php=>扩展配置(不改变模块配置,配置文件名作为配置数组的键,返回值作为数组的值,相当于把一组配置打包,如无需打包要求不建议采用,可直接在应用配置中添加);
index/config.php=>专属配置,只在所在的的模块中生效优先级top。
如果需要增加扩展配置,也是在app\extra ; 如果想在不同模块里使用不同的配置,比如在index模块下单独增加config,只需要在app\index 下新建config.php文件就可以了,希望能帮助你