1,如果定义了较多的命名空间,效率会有所下降,所以我们可以给常用的类库定义类库映射。命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效。
2,容器中已经调用过的类会自动使用单例,除非你使用下面的方式强制重新实例化。
3,容器的更多使用主要用于依赖注入,和5.0自动注入的方式有所区别,类的绑定操作不再使用Request对象而是直接注册到容器中,并且支持模型事件和数据库事件的依赖注入,依赖注入会首先检查容器中是否
注册过该实例对象,如果有的话就会自动注入。
4,门面(Facade)为容器中的类提供了一个静态调用接口,相比于传统的静态方法调用,带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。
说的直白一点,Facade功能可以让类无需实例化而直接进行静态方式调用。在进行依赖注入的时候,请不要使用Facade类作为类型约束,而是建议使用原来的动态类。
Facade类定义了一个实例化的instance方法,如果你的类也有定义的话将会失效。
5,think\Db类的实现本来就类似于Facade机制,所以不需要再进行静态代理就可以使用静态方法调用(确切的说Db类是没有方法的,都是调用的Query类的方法)。
6,其中log_write钩子仅在调用Log::write方法的时候执行。view_filter钩子v5.1.3+版本中已经废除,改用视图类的filter方法过滤。
7,中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。中间件handle方法的返回值必须是一个Response对象
8,route目录下的任何路由定义文件都是有效的,默认的路由定义文件是route.php,但你完全可以更改文件名,或者添加多个路由定义文件(你可以进行模块定义区分,但最终都会一起加载)。
9,路由可以在rule方法中指定请求类型,不指定的话任何类型都有效。请求类型不区分大小写。
10,规则表达式的定义以/为参数分隔符(无论你的PATH_INFO分隔符设置是什么,请确保在定义路由规则表达式的时候统一使用/进行URL参数分隔,除非是使用组合变量的情况)。
11,系统默认的变量规则设置是\w+,只匹配字母数字和下划线字符,并不会匹配特殊符号和中文,需要定义变量规则或者调整默认变量规则。不需要开头添加^或者在最后添加$,也不支持模式修饰符,系统会自动添加。
12,路由参数可以在定义路由规则的时候直接传入(批量),不过5.1采用了更加面向对象的方式进行路由参数配置,因此使用方法配置更加清晰。
13,建议路由定义写在注释最后一段,否则后面需要一个空行。
15,闭包中可以使用路由的其它方法,包括路由分组,甚至给域名设置MISS路由。目前只支持二级域名和三级域名的泛域名部署。
16,注意,生成方法的第一个参数必须和路由定义的路由地址保持一致,如果写成下面的方式可能无法正确生成URL地址:Url::build('blog/read','id=5&name=thinkphp');
17,需要注意的是,URL地址生成不会检测路由的有效性,只是按照给定的路由地址和参数生成符合条件的路由规则。
18,锚点和域名一起使用的时候,注意锚点在前面,域名在后面。
thinkphp5基础整理
最新推荐文章于 2023-07-11 15:21:08 发布