一起学习Thinkphp (3.命令创建模块,tp的生命周期,路由访问)

命令创建模块

在Tinkphp中,为我们提供了快速生成模块的命令行,使用命令行可以快速的创建模块

创建模块目录

php think build --module 模块名称

使用此命令行能快速生成一个模块目录,里面包含了 controller model view目录

创建控制器

php think make:controller 模块名称/控制器名称 [--plain]

使用此命令行能快速的创建控制器。注意:控制器名称首字母必须大写,默认情况下控制器没有后缀,如果需要开启后缀,需要修改application/config.php里面的配置。使用--plain可以创建一个空的资源控制器

'controller_suffix' => false, //默认不需要后缀 'controller_suffix' => 'controller',//修改后那么就有后缀如:Indexcontroller.php 不建议开启

创建模型

php think make:model 模块名称/模型名称

使用此命令行能快速的创建模型。注意:模型首字母必须大写,且必须对应数据表名称。如果数据表名称是admin_user,那么模型就必须是AdminUser,不需要下划线首字母也必须大写。

URL的生命周期

典型的URL生命周期:客户端发送请求到服务器,服务器接收到请求返回给客户端。这就是一个典型的URL生命周期的执行。

Thinkphp的生命周期

1、入口文件->public/index.php:用户通过入口文件发送请求,它是整个应用的入口与起点。入口文件只做二件事情,定义常量和加载引导文件,不放任何业务代码。

2、引导文件->thinkphp/start.php:它执行 加载常量 -> 加载环境变量-> 注册自动加载-> 注册错误与异常-> 加载惯例配置-> 执行应用

3、注册自动加载:作用与将所有符合类型的类库(composer的依赖)自动进行加载,不需要我们认为去注册加载。

4、注册错误和异常机制:它主要是执行think/Error::register方法注册错误和异常处理。

5、应用初始化:严格意义上以上4部操作都是属于应用的初始化部分。

6、URL的访问检测:URL必须是PATH_INFO格式才允许继续允许。http://域名/入口文件/模块名/控制器名称/操作方法名称/参数名/参数值

7、路由检查:如果开启了url_route_on参数,则首先会进行路由的检测,一但检测到了路由的匹配规则会注册到相应的URL调度。

8、分发请求:将用户的请求分发到对于的路由地址,完成业务的逻辑并返回数据。统一使用return返回数据。

9、响应输出:控制器正常返回的数据:字符串或数组,统一使用return返回数据,而不是直接的输出,这样会自动调用Response::send()方法最终返回数据输出到页面或客户端。并自动转换成default_return_type参数的格式。

10、响应结束:响应输出完成后,应用生命周期结束。

路由访问

路由访问三大模式:普通模式、混合模式、强制模式

普通模式:就是application/config.php 配置文件里面的 url_route_on' => false,就为普通模式了。普通模式访问全部采用PATH_INFO格式。

混合模式:Thinkphp采用的就是混合模式,application/config.php 'url_route_on' => true 默认就是true。混合模式开启了路由就可以使用路由规则访问,没有开启路由就使用PATH_INFO访问。

强制模式:强制模式就是开启了 application/config.phproute_complete_match' => true,那么必须全部采用路由模式包括了首页

动态注册

使用\think\Routerule方法实现路由的动态注册,基本语法如下:

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)一般用于正则');

简单实例:

// 普通动态注册 Route::rule('dome/:str','home/text/getAll','GET',['ext' => 'html'],['str' => '\w{1,10}']); // 路由表达式,路由的地址,访问的方式,URL的后缀参数,变量的正则匹配 // 数组动态注册 return [ 'dome/:str' => ['home/text/getAll',['method' => 'get'],['ext' => 'html'],['str' => '\w{1,10}']], ]; // 路由表达式,路由的地址,访问的方式,URL的后缀参数,变量的正则匹配

路由规则

路由规则就是用户最终用来访问的URL地址,并非原始URL地址。

基本语法如下:

路由标识符/:变量名/[:变量名] Route::rule('dome/:str/[:str2]','home/text/getAll','GET',['ext' => 'html'],['str' => '\w{1,10}']); // 当我们在方法里,参数设置了默认值,此时我们的变量就可以不用传入直接使用方法默认的值 public function getAll($str,$str2 = '你好') { echo $str,$str2; }

发布于 2019-07-27 21:21