ThinkPHP3和ThinkPHP5的区别(二)版本对比

2018-01-19 16:24 ThinkPHP 342 梁俊威

ThinkPHP 3 完全开发手册:https://www.kancloud.cn/manual/thinkphp/1678

ThinkPHP 5 完全开发手册:https://www.kancloud.cn/manual/thinkphp5/content


控制器写法不同

// ThinkPHP3的写法
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
    public function hello(){
        echo 'hello,thinkphp!';
    }
}

// ThinkPHP5的写法
namespace app\index\controller;
class Index{
    public function index(){
        return 'hello,thinkphp!';
    }
}


控制器命名不同

// ThinkPHP3命名
IndexController.class.php

// ThinkPHP5控制器命名
Index.php


在控制器中正确的输出模板

5.0在控制器中输出模板,使用方法如下:

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

// 未继承think\Controller时
return view('index/hello');


模型

如果非要对比与旧版本的改进,模型被分为数据库、模型、验证器三部分,分别对应M方法、模型、自动验证,同时均有所加强,下面做简单介绍。

数据库

5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:

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

// ThinkPHP5
Db('User')->where('name','thinkphp')->find();


模型

新版的模型查询增加了静态方法,例如:

User::get(1);
User::all();
User::where('id','>',10)->find();

模型部分增强了很多功能,具体请查阅“模型章节”。

自动验证

对比旧的版本,可以理解为之前的自动验证且不同于之前的验证;

ThinkPHP5.0验证使用独立的 \think\Validate 类或者 验证器 进行验证,不仅适用于模型,在控制器也可直接调用,具体使用规则请参考“验证”章节,这里不再赘述。

配置文件

新版对配置很多的配置参数或者配置层次都和之前不同了,建议大家要么看看代码,要么仔细通读下官方的开发手册,不要因为配置的问题浪费自己一整天的时间。

异常

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等

部分常量可以在Request里面进行获取,具体参考“请求章节”。

注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。

若无特殊说明,本站点所有内容均为原创,转载请说明出处!

原文链接:https://www.codelearn.cn/read/19.html 点击复制