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

 

posted @ 2022-05-14 21:17  棉花糖88  阅读(107)  评论(0)    收藏  举报