-
总结
优先级:动态配置>模块配置>扩展配置>应用配置>惯例配置
知识拓展以下仅供了解:
1惯例配置的作用域是全局,作用域越大,优先级越低;
2场景配置是用来切换开发场景的
3模块配置里也可细分扩展配置,很少用到,除非项目很庞大
4动态配置里有又可细分为控制器配置和方法配置(方法配置优先级>控制器配置)
5database.php属于扩展配置,但可直接放在conf目录下,也可放扩展(extra)目录下查看全部 -
动态配置 1.何为动态配置:其实可以理解为控制器级别及以下级别的配置 2.如何实现动态配置
a.在某个控制器中的__construct()方法中使用config('name', 'david'),那么在该控制器中所有的方法都可以通过config()函数获取到配置的参数值
b.在某个控制器方法中使用上述操作,那么配置的参数值,仅在该方法中生效
代码案例:动态配置 |<?php namespace app\index\controller;
class Index{
public function __construct(){ config('before','beforeAction');//对当前控制器有效
}
public function demo(){ config('demoAction','demo'); //只对当前demo方法有效 dump(config());
}
public function index(){ config('indexAction','index');//只对当前index方法有效 dump(config());
}
}查看全部 -
模块配置:专门为单个模块提供配置服务,之前的扩展配置和场景配置都是相对整个项目应用级别的,而模块配置是相对模块级别,作用域不同
在conf文件夹下新建文件夹,文件夹的名字和相应的模块名字必须一致,例如在conf文件夹下新建文件夹的名为index,则这个文件夹下的所有配置只对index这个模块生效;
1.在conf目录下index文件夹下新建config.php文件来进行对单个模块的配置进行设置,注意这个文件名必须为config.php;
2.conf目录下index文件夹下也可以通过创建extra目录来扩展配置;
|conf配置的作用域是整个项目应用
|模块配置作用域只对相应单个模块生效;
查看全部 -
场景配置:不同办公环境中,使用不同配置
查看全部 -
场景配置
1.为什么需要场景配置:不同的开发环境可能有一些配置不同,例如在家开发项目和在公司开发项目用的不是同一台电脑,那么这两台电脑上安装的数据库软件的密码可能就不同,在环境切换过程中不可能将不同的配置一一做更改,这样太麻烦
2.如何实现场景配置:
a.tp5提供了一个惯例参数app_status,只需要改变它的值就能实现一键修改平滑的切换运行环境
b.app_status惯例参数对应的值表示应用哪个运行环境配置文件,该文件的文件名即为该参数的值,文件中的配置参数即为目前所需环境的参数配置
步骤:在conf文件夹下的config.php应用配置文件里设置数组‘app_status’=>'home'或'office',来控制切换场景,再在conf文件夹下创建 home.php或office.php两个文件;在这两个文件里进行相应的配置就行了;切换办公环境的时候,直接修改config.php应用配置文件里的数组‘app_status’的值为'home'或'office'就行了;
需要注意的是如果使用场景配置(即home.php或office.php)修改数据库配置,则需要把数据库配置的所有项都写上,原来的数据库参数会被现有数据库参数全部替换,而不是替换不同项!修改其他配置也一样,如果这个配置是个数组,则需要把每一项都拷贝到场景配置文件里
查看全部 -
扩展配置
1.为什么要扩展配置:在开发中,配置项会很多,例如缓存配置、session,cookie配置等,如果这些配置都放在config.php文件中,不利于维护和管理;那么我们可以拆分为多个配置,所以就有了扩展配置,
另外,扩展配置也方便配置惯例参数中参数为数组类型的参数的配置2.如何实现扩展配置
a.在conf目录下建立extra目录(默认为扩展配置的目录,所以文件夹名必须为extra)
b.惯例配置的参数一般为数组类型,如果想通过扩展配置来修改惯例配置的话,那么在extra目录下新建的文件名必须和惯例配置里的要配置的那个数组参数同名;
c.database.php数据库配置可以放在extra目录进行配置,也可以放在conf目录下,但是database.php属于扩展配置,优先级大于conf目录下的config.php(database.php是个特殊)
d.注意配置参数生效的优先级最高的是extra目录下的配置参数,即使之前配置了同名参数(参数可能在config.php中已配置),会覆盖之前的配置
优先级:扩展配置>应用配置>惯例配置(一级一级向上array_merge())
扩展配置在 conf/extra/配置文件名.php database.php属于扩展配置,可以放在conf文件夹下
应用配置在 conf/config.php
惯例配置在 thinkphp/convention.php
查看全部 -
通过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
查看全部 -
在tp框架中访问新建的admin模块的方法url如下;
http://localhost/thinkphp_5.0.5/public/index.php/admin/index/index
就是说必须要经过public下的index.php文件查看全部 -
框架的设计者为我们提前设计好了框架必须的配置,我们只有拥有这些配置才能正常的使用框架,这些配置位于位于thinkphp目录下的convention.php,这些就是框架的惯例配置(即通常的配置),我们可以修改惯例配置,来达到我们配置的目的;
查看全部 -
如何理解框架?
php是原料;
框架是由php原料做成的毛坯房;
我们想要的网站是精装房;
我们可以从php原料开始做起,最后做成精装房,这样效率就太慢;
如果直接从毛坯房(即框架)开始装修,速度显然大大提升;
这就是框架存在的意义,大大的提升了我们开发的效率,但框架是php原料做成的;查看全部 -
1.定义整个框架系统的配置文件目录,在public目录下,打开index.php,在代码中define(‘CONF_PATH’,__DIR__.'/../conf/');这样方便我们设置配置,因为框架自带配置有很多不便;
2.tp5提供了一个获取框架配置参数(惯例配置)的助手函数 config(),这个函数返回的配置参数位于thinkphp目录下的convention.php文件查看全部 -
Thinkphp最终将配置转化为数组提供给我们使用;
线上正式环境、测试环境,本地开发环境,不同的环境会使用不同的配置,例如线上环境的数据库配置和本地环境的数据库配置就不一样;
thinkphp为我们提供了两种获取和设置配置的方式,一种是通过think下的config类来进行改变,另一种是通过助手函数config()来进行设置或改变,其实config()助手函数就是config类的封装;查看全部 -
把application改为app更便于理解;对应的文件夹名字也要改;
defind("APP_PATH",__DIR__."/../app/"); //定义应用入口文件查看全部 -
当我们创建模块的时候,把模块命名为common这个名字的时候,不可以通过url直接访问这个模块,因为thinkPHP把common做成一个公共的模块,不允许我们在url上直接访问。但是我们可以通过其他模块来调用访问这个模块;至于通过其他模块怎么调用common模块,看截图;
这样也有一个好处:就是如果我们有一些通用的控制,我们可以写在common模块中,首先足够安全,因为不允许能通过url直接访问,并且减少了代码的重复编写以及代码的冗余;
其实,common就是一个公用的模块,我们可以在common模块里,编写提供其他类依赖的模块,其他模块里的类可以直接继承common模块里的类,然后就可以使用类里面的方法了;
通过其他模块里的类调用common模块的案例代码如下:一,use 然后new
use app\common\User as commonUser; as别名,起个别名,下面继承好用
$commonUser=new commonUser();
return $commonUser->showNames("aaaa");
二,use 然后extends commonUser;
use app\common\User as commonUser;
class index extends commonUser
{
function index(){
return $this->showNames("bbbb");
}
}
三,app下common模块是公共的,前后台都可调用的,但urll不可直接访问的。
查看全部
举报