tp3.2与tp5.0的区别,tp5和tp5.1
首先声明,本章不是指导老项目升级到5.0,而是帮助使用3版的开发者。x更快地熟悉这个全新的版本。同时强烈建议开发者抛弃旧的思维模式,因为5.0是一个全新版本的颠覆和重构。
3.需要摒弃的旧观念
URL的更改
首先对3.x的不精确给开发者带来的不正确引导表示歉意,在5.0版本中,正式废除了通过 get 获取 ID 的方法。严格来说,这样的url不属于$_GET,现在可以通过‘param’获得。具体用途可以通过请求部分查询。
型号变更
新版本的模型查询返回默认的“object ”,系统默认添加“toArray”方法。许多开发人员试图在“all”或“select”中使用“toArray”将其转换为数组。在此,希望开发者能够理解对象的概念,尽量对数据使用对象,或者对数据库操作使用 db 方法,并提醒一些过度使用
新版变更
命名规范
目录和文件名带有“小写下划线”并以小写字母开头;类库和函数文件都统一以。php类的文件名都由命名空间定义,命名空间的路径与类库文件的路径一致(包括大小写);类名与类文件名一致,采用驼峰法命名(首字母大写)。
系统不依赖任何函数,只提供常用操作封装的辅助函数。单字母函数被放弃,默认情况下加载辅助函数。详情请参考上一章“辅助功能”。
5.0的URL访问不再支持常见的URL模式,路由也不支持常规路由定义,而是全部改为常规路由匹配变量规则(常规定义)的方式,此处不赘述。
控制器
控制器的命名空间已经调整,不需要继承任何控制器类。
应用类库的命名空间统一为app(可修改)而不是模块名;控制器的类名默认没有控制器后缀,可以配置controller_suffix参数启用控制器类后缀;控制器的操作方法使用返回模式返回数据,而不是直接输出;废除原来的前后操作法;
版本比较
3.2版本控制器编写
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
命名空间Home Controller使用思考控制器;class IndexController扩展控制器{ public function hello(){ echo hello,thinkphp!;} }
5.0版控制器编写方法
命名空间app index controller
class Index { public function Index(){ return hello,thinkphp!;} }
3.2版控制器命名
IndexController.class.php
5.0版控制器命名
Index.php
* *控制器中的正确输出模板* *
5.0在控制器中输出模板。使用方法如下:
如果您继承了thinkController,您可以使用:
返回$ this-fetch( index/hello );
如果您的控制器没有继承thinkController,请使用:
返回视图(索引/hello );
如果一定要对比老版本的改进,模型分为数据库、模型和验证器三个部分,分别对应M方法、模型和自动验证,三者同时加强。下面简单介绍一下。
资料库
增强了5.0的数据库查询功能。原本需要通过模型使用的链式查询,可以通过db类直接调用,原来的M函数调用可以改为Db函数,例如:
版本3.2
m( User )-where([ name = thinkphp ])-find();
版本5.0
db(User)- where(name , thinkphp )-find();
新版本的模型查询添加了静态方法,例如:
user:get(1);user:all();User:where(id , ,10)-find();
模型部分增强了很多功能,详情请参考“模型章节”。
自动证明
与旧版本相比,可以理解为之前的自动验证,与之前的验证不同;
ThinkPHP5.0验证使用独立的thinkValidate类或验证器进行验证,不仅适用于模型,还可以在控制器中直接调用。具体使用规则请参考“验证”章节,此处不再赘述。
配置文件
新版本的许多配置参数或配置级别与以前不同。建议你要么看代码,要么仔细通读官方开发手册,不要因为配置问题浪费一整天。
5.0对错误零容忍。默认情况下,任何级别的错误都会引发异常,异常页面已经过重新设计,可以显示详细的错误信息,以便于调试。
放弃系统常数
相比之前的版本,5.0版本摒弃了大量的系统改动,用户如有相关需求可自行定义。
以下是常数的废除。
request _ method is _ get is _ post is _ put is _ delete is _ Ajax _ _ ext _ _ common _ module module _ name controller _ name action _ name app _ namespace app _ debug module _ path等。
有些常数可以索取。详情请参考“请求章节”。
注意:同样,这一章只为使用版本3的开发人员编写。x之前要快速了解5.0,5.0的具体功能需要开发者通读手册。
辅助功能
5.0 helper函数和3.2版本的单字母函数比较如下:
3.2版5.0版CconfigEexceptionGdebugLlangT废止IinputN废止DmodelMdbAcontrollerRactionB废止UurlWwidgetScacheF废止