ThinkPHP8.x控制器和模型的使用方法

一:一直以来我对TP控制器和模型的误解

一直以来,我都误以为:在控制器里写一个方法(增删改查)用来组织数据,然后还需要在模型里再写一个对应的方法(增删改查)用来处理数据。

这几天在研究TP8,突然发现是自己误解了好久,看TP8的手册,控制器部分几乎没有什么内容了,增删改查都放在模型部分介绍。

真实的情况是:我们只需要在控制器里组织数据,(增删改查)的模型操作方法都是TP已经帮我们写好的,在控制器里就可以直接使用!

建一个空模型就行了

复制代码
<?php
declare (strict_types = 1);

namespace app\admin\model;

use think\Model;


class Channel extends Model
{

}

在控制器里引用一下

复制代码
use app\admin\model\Channel as ChannelModel;

然后就可以用了:

复制代码
$model = new ChannelModel();

$model->save($data)

二:ThinkPHP8.x控制器初始化方法的使用

注意必须要在基类控制器里面集成app\BaseController只有,initialize方法才能正常使用!!!否则是不起效果的。

复制代码
use app\BaseController;

class Base extends BaseController
{

    public $prefix;

    protected function initialize(){
        //获取一下数据库前缀
        $this->prefix = Config::get('database.connections.mysql.prefix');

    }
}

这样操作之后:其他的继承了Base的控制器里面,都可以直接用$this->prefix来使用这个变量了,有点像整个应用的全局变量。

initialize方法的特点在于:只需要在这里写一次就行了,其他的控制器里不需要再做任何操作,所有继承了Base控制器的其他控制器,运行前都会自动触发一次这里的initialize方法。