2. 分页查询源码解读
分页涉及到的类
//1. 数据查询基础类 BaseQuery.php 抽象类 \vendor\topthink\think-orm\src\db\BaseQuery.php
//2. 分页基础类 Paginator.php 抽象类 \vendor\topthink\think-orm\src\Paginator.php
它有一个抽象方法 就是 render() 方法
//3. 分页服务类 PaginatorServer.php 它负责把 分页基础类 绑定到 分页驱动类 \vendor\topthink\framework\src\think\service\PaginatorService.php
//4. 分页驱动类 Bootstrap.php 它继承了实现了 分页基础类 \vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php
我们学习分页之前 需要了解 一个基础知识 系统服务
tp框架提供了三个系统服务 其中就有我们的分页服务类
它有两个方法
//1. register() 类标识的绑定

//2. boot() 方法 初始化一些参数配置
通过上面的 register方法 我们知道 分页服务类 把 分页基础类的标识 绑定到 实现它的 分页驱动类
我们还需要了解一个知识点 我们看到这三个方法 的值类型是 Closure类 [ 也就是匿名函数类 ]

也就是说 这三个静态成员 其实是 三个匿名函数

匿名函数类的官方说明文档
https://www.php.net/manual/zh/class.closure.php
还有一个知识点 call_user_func 把第一个参数作为回调函数调用
call_user_func 方法的说明地址
https://blog.csdn.net/moliyiran/article/details/83514495

这段代码的意思是:
1. 把第一个参数作为回调函数 第一个参数是 $maker
2. 我们看$maker 是一个匿名函数 我们把后面的值传递给 $maker
3. $maker 是Closure类的实例对象 Closure有构造方法
4. $maker 匿名函数会 执行它的构造方法 __construct()
5. 走到这里 就直接返回我们需要的数据了
6. 打印返回的数据 可以看到是 分页驱动类对象 Bootstrap


//==================== 其他的一些基础知识 =====================
1. 抽象类的基础知识
//1. 一个类中至少有一个抽象方法 //2. 抽象方法不允许有{} //3. 抽象方法前必须加 abstract
//4. 抽象类不能实例化 只能继承 //5. 继承的派生类中要把所有的抽象方法重载才能被实例化
//6. 抽象类的意义
派生类继承抽象类的时候,必须要用抽象类的命名规则去建立方法,否则不允许派生类实例化,其实是申明了一种规范,达到规范方法的目的。
tp6 核心分析:系统服务
https://article.itxueyuan.com/kB14Lr
1. 系统提供了三个默认的服务
//1. 模型服务类 ModelService.php \vendor\topthink\framework\src\think\service\ModelService.php //2. 分页服务类 PaginatorService.php \vendor\topthink\framework\src\think\service\PaginatorService.php //3. 验证服务类 ValidateService.php \vendor\topthink\framework\src\think\service\ValidateService.php
2. 什么是系统服务
对于程序需要用到的类在使用前 先进行类的标识的绑定 一边容器能够对其进行解析.
服务类有两个方法
register() 方法 :类标识的绑定
boot() 方法:主要看一个类在使用前的需要,初始化一些参数 进行一些配置
3. 我们以 ModelService为例
ModelService类主要对Model类的一些成员变量进行初始化(通过boot方法实现),为后面的Model类的 [出场] 布置好 [舞台]
boot 单词 动词 计算机启动的意思

文章不错 think php 数据分页,接口数据使用ThinkPHP5的自定义分页
https://blog.csdn.net/weixin_30575925/article/details/115157988


浙公网安备 33010602011771号