ThinkPHP

195 阅读1分钟

三种调试输出

  1. dump(): 输出所有数据类型,不会停止程序
  2. halt():会停止程序
  3. trace():调试器中输出

控制器

大多数情况下,建议给你的控制器继承一个基础控制器

空控制器

在找到不控制器的时候就会走这个控制器

在文档中让定义一个Error类,为什么是Error类呢?因为配置文件中要求的:config->route.php下

image.png

image.png

image.png

请求

请求对象

静态获取请求

think\facade\Request

image.png

动态获取请求

think\Request image.png

继承父类的request属性

继承父类(BaseController)

特点不需要引入类,因为是继承的

image.png

image.png

请求方法

变量获取

模型

一张表一个模型

模型的定义

一般情况下模型名和表名一致(去前缀) 如:

<?php 
namespace app\model; 
use think\Model; 
class User extends Model { 
}

一定要继承基础模型类 think\Model 因为基础模型类中有数据库的所有方法

<?php
namespace app\model;

use think\Model;

class User extends Model
{
    // $table配置数据表名称(可省略,在类名与表明一致的情况下可省略)
    protected $table = 'think_user';
    
    // $pk (primary key) 配置主键 (可省略,在主键为id时,因为默认为id)
    protected $pk = 'uid';
}

模型里面的方法几乎都是静态方法,因为提升效率

搜索器

动态方法,不需要手动调用

搜索器仅在调用withSearch方法的时候触发。

例子:

<?php
namespace app\model;

use think\Model;

class User extends Model 
{
    public function searchNameAttr($query, $value, $data)
    {
        $query->where('name','like', $value . '%');
    }
    
    public function searchCreateTimeAttr($query, $value, $data)
    {
        $query->whereBetweenTime('create_time', $value[0], $value[1]);
    }    
}

参数说明:

  1. $query:模型对象
  2. $value:搜索数组中该字段对应的值
  3. $data:搜索数组

获取器

事务

前提:所有用到的表必须是innodb引擎