Thinkphp3.2版本与版本5的区别

URL的变动

命名规范

目录和文件名采用‘小写+下划线’,以小写字母开头;

类库、函数文件统一以.php为后缀;

类的文件名均以命名空间定义,且命名空间的路径和类库文件所在路径一致(包括大小写);

 

数据库

模型链式查询==>调用db类(M函数==>db函数):

M('User')->where(['name'=>'thinkphp'])->find();

db('User')->where('name','thinkphp')->find();

 

路由

不再支持普通URL模式、正则路由定义,全部改为规则路由配合变量规则(正则定义)的方式

 

模型

模型查询新增静态方法,完全面向对象,且必须有对应模型类(D函数==>model函数)

D('User')->where(['name'=>'thinkphp'])->find();

model('User')->where('name','thinkphp')->find();

 

控制器

调整命名空间,可无需继承任何控制器类

应用类库命名空间统一为app

控制器的类名默认不带Controller后缀

操作方法采用return返回数据

废除操作前后置方法

 

输出模板

继承think\Controller:return $this->fetch('index/hello');

没有继承think\Controller:return view('index/hello');

 

自动验证和自动完成

通过think\Validate类统一验证,模型里定义修改器完成

 

异常

展示详尽错误信息,便于调试

 

调试和日志

支持浏览器控制台查看Trace信息,采用SocketLog支持远程调试

 

常量

系统常量的废弃,仅保留框架的路径常量定义

 

函数

不依赖任何函数,只是对常用的操作封装提供了助手函数

 

容器与依赖注入

将类的实例作为参数,传递给类方法,自动触发依赖注入==> 相当于直接实例化类,可以直接调用类方法、属性

容器:对象打包器

依赖注入:把对象传入到方法中使用

绑定闭包到容器:闭包,即匿名函数,绑定到容器,仅需将匿名函数变量以键值对传入

 

Facade

①指定绑定:创建一个类,继承 \think\Facade ,静态方法绑定要代理的类,在另一空间use该代理类,静态调用

②动态绑定:\think\Facade::bind(‘代理类’,'要绑定的类'),静态调用

==>相当于实例化后调用方法、属性,①②区别在于是否在静态代理类绑定指定类名

入口文件:public/index.php

载入基类:thinkphp/base.php(完成核心类注册:到容器、静态代理)

 

e.g

传统实例化:new Request()

静态代理:think\facade\Request

依赖注入:Request $request

父类Controller中的属性$request:$this->request

 

posted @ 2019-05-22 00:22  羽*枫  阅读(293)  评论(0编辑  收藏  举报