ThinkPHP5.0教程学习02:TP5框架架构、生命周期、URL访问等

学习教程来源于:
php中文网 ThinkPHP5 视频教程
ThinkPHP5.0完全开发手册

TP5基于MVC(模型-视图-控制器)方式来组织

Model(模型)<–Controller(控制器)–>View(视图)
模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配!
模型:请求中用到的数据
视图:将数据展示给用户

URL访问默认采取PATH_INFO方式:
http://域名/入口文件/模块/控制器/操作/参数列表

入口文件(index.php)

1.入口文件是整个Web应用的起点;
2.入口文件最常用的是:index.php;
3.入口文件并不唯一,例如可为后台单独设置入口文件:admin.php;
4.入口文件可以通过URL重写功能将其隐藏;

应用(application)

1.应用是URL请求到完成的(生命周期)处理对象,由\think\App类处理;
2.应用必须在入口文件(如:Index.php)中调用并执行;
3.可为不同的应用创建多个入口文件,如后台入口:admin.php;
4.应用有自己独立的配置文件(config.php)和公共函数文件(common.php);

模块(module)

1.一个应用下又多个模块,对应这应用不同部分,如前台、后台;
2.每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作;
3.每个模块可以有独立的配置文件(config.php)和公共函数文件(commom.php);
4.如果应用简单,可使用单模块模式thinkphp/convention.php:'app_multi_module'=>false,此时应用单模块模式

控制器(controller)

1.每个模块下可以有多个控制器负责响应URL请求;
2.每个控制器对应一个控制器类(class),如User.php;
3.控制器管理者模型和视图,是系统资源的调度与分配中心;
4.ThinkPHP5的控制器不需要继承任何基类就可以工作;

操作(action)

1.操作对应着控制器类中的方法,是URl请求的最小单元;
2.任何的URl请求,最终都是由控制器中的操作方法来完成的;
3.操作时整个应用的最终执行单元,是URL路由的核心与目标;

在phpstudy环境下隐藏入口文件时需注意:
在入口文件同级目录下添加.htaccess文件,内容如下:
htaccess文件 最后一句配置在 index.php后面加一个 ? ,方可成功
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
模型(model)

1.模型通常对应整个应用,因此模型通常在应用(application目录下创建);
2.尽管模型主要是针对数据库进行CURD操作,但也可以不操作数据库;
3.模型通常完成试剂的业务逻辑和数据封装,并返回和格式无关的数据;
4.模型返回的数据,通常是数组(array)或字符串(string)
5.模型支持分层操作,例如将模型层分为逻辑层/服务层/事件层

视图(view)

1.控制器调用模型返回的数据,是通过视图转换成不同格式输出的;
2.视图根据请求,调用模板引擎确定是直接输出还是模板解析后再输出
3.视图由大量的模板文件组成,这些文件对应着不同的控制器中的操作方法
4.模板目录是可以动态设置的;
5.视图最直观的理解,就是由一系列的HTMl文件组成的;

TP5的生命周期

入口文件->引导文件->注册自动加载->注册错误和异常机制->
应用初始化->URL访问检测->路由检测->分发请求->响应输出->
应用结束

1.入口文件
①文件名:index.php;
②位置:public/index.php;
③用户通过入口文件发起服务请求,是整个应用的入口与起点;
④任务:定义常量,加载引导文件,不要放任何业务处理代码;
⑤代码:

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

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

3.注册自动加载
①类方法:Loader::register();
②作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载;
③执行流程:
注册自动加载方法:\think\Loader::autoload->注册系统命名空间->加载类库映射文件->注册Composer自动加载->注册extend扩展目录

4.注册错误和异常机制
执行Error::register()注册错误和异常处理机制。
①应用关闭方法:think\Error::appShutdown
②错误处理方法:think\Error::appError
③异常处理方法:think\Error::appException

5.应用初始化
严格意义上讲,前面的内容都可算做应用初始化:
加载公共配置->加载公共扩展配置->加载应用状态配置->
加载别名定义->加载行为定义->加载公共函数文件->
注册应用命名空间->加载扩展函数文件->设置默认时区->
加载系统语言包

6.URL访问检测
URL必须是PATH_INFO格式才允许继续允许:
①PATH_INFO标准格式:
http://域名/index.php/模块名/控制器名/操作名/参数键值对
举例:http://tp5.com/index.php/index/user/add/id/10/name/peter
②PATH_INFO兼容格式:
http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
举例:
http://tp5.com/index.php?s=index/user/add&id=10&name=peter

7.路由检测
①如果开启了url_route_on参数,则首先进行URL路由检测;
②一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度;
③TP5支持的路由规则如下:
路由到模块/控制器/操作;(默认)
路由到外部重定向地址;
路由到控制器方法;
路由到闭包函数;
路由到类的方法;

8.分发请求
①将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据;
②统一使用return返回数据,不要用echo直接输出;
③如非必要,请不要使用exit或者die中断执行;
④分发请求支持TP5的物质路由地址模式;

9.响应输出
①控制器正常返回的数据通常是:字符串(String)或数组(Array)格式;
②统一使用return返回数据,而不是直接输出,这样可以自动调用REsponse::send()方法将最终的返回数据输出到页面或者客户端,并自动转换成default_return_type参数配置的格式(XML,JSON等)。

10.应用结束
①响应输出完成后,应用生命周期基本结束,生成日志报告
②日志包括俩部分:用户调试输出和系统自动生成;
③日志在应用结束后,自动写入。

入口文件

1.定义框架路径、项目路径(可选)
2.定义系统相关常量(可选)
3.载入框架入口文件(必须)

文件内容:

<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

应用的入口文件默认在:public/index.php
public目录为Web可访问目录,其他的文件都可以放到非web访问目录下面

多入口文件
①一个应用通常只有一个入口文件,但也不是绝对的;
②例如为后台创建单独入口文件:admin.php,与admin模块绑定;
③多入口文件,可以使应用项目层次更加清晰,管理更加灵活。

TP5支持的URL模式

1.传统模式(已经不再支持,请不要使用)
http://tp5.com/index.php?m=Index&c=User&a=del&id=15

2.PATH_INFO:(推荐方式)
http://tp5.com/index.php/index/user/add/id/15

3.兼容模式
①参数以传统方式传入
http://tp5.com/index.php?s=index/user/add&id=15
②参数以PATH_INFO方式传入
http://tp5.com/index.php?s=index/user/add/id/15

URL大小写问题
1.默认情况下,URL是不区分大小写的;
2.URL里面的模块/控制器/操作名会自动转换为小写;
3.控制器再最后调用的时候会转换为驼峰法处理;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ThinkPHP是一款开源的PHP开发框架ThinkPHP v5是其最新版本。ThinkPHP v5后台源码是指使用ThinkPHP v5框架开发的网站后台管理系统的源代码。 ThinkPHP v5框架在后台开发中具有许多优点。首先,它提供了强大的开发功能和丰富的开发工具,可以快速高效地开发出功能完善的后台系统。其次,ThinkPHP v5框架采用了MVC(模型-视图-控制器)的架构模式,有助于代码的组织和维护。此外,它还提供了丰富的数据库操作方法和数据验证机制,使得后台系统与数据库的交互更加简单高效。 在ThinkPHP v5后台源码中,通常会包含一些常见的后台管理功能,例如用户管理、权限管理、角色管理、菜单管理、日志管理等。这些功能可以帮助管理员对网站的内容和用户进行管理和控制。此外,根据具体的业务需求,开发者还可以根据ThinkPHP v5框架的灵活性进行二次开发,添加自定义的功能模块。 使用ThinkPHP v5后台源码可以带来许多好处。首先,它可以节省开发时间和成本,因为框架提供了许多预置的功能模块和代码库,可以直接使用,无需从头开始开发。其次,使用框架可以提高系统的稳定性和安全性,因为框架内部有一系列的安全机制和防御措施。最后,使用ThinkPHP v5后台源码可以遵循一些最佳实践和设计原则,使得代码结构更加清晰、易于维护和扩展。 总之,ThinkPHP v5后台源码是使用ThinkPHP v5框架开发的网站后台管理系统的源代码。它具备强大的开发功能和丰富的开发工具,可以帮助开发者快速、高效地构建功能完善的后台系统,并提供了一些常见的后台管理功能。使用该源码可以节省开发时间和成本,提高系统的稳定性和安全性,以及遵循最佳实践和设计原则。 ### 回答2: ThinkPHP v5是一款开源的PHP框架,用于快速开发Web应用程序。它提供了一套完善的开发工具和功能,方便开发者进行快速、高效的开发工作。 ThinkPHP v5后台源码是指使用ThinkPHP v5框架开发的后台管理系统的源代码。后台管理系统是一个用于管理网站后台信息的应用程序,通常包括用户管理、权限管理、内容管理等功能。 ThinkPHP v5后台源码具有以下特点: 1. 高度模块化:源码采用模块化开发方式,可以方便地进行功能扩展和定制化开发,满足不同项目的需求。 2. 轻量级:框架本身代码轻巧,运行速度快,对服务器资源的占用较少。 3. 安全性高:源码使用了一些安全机制来保护系统免受恶意攻击,例如SQL注入、跨站脚本等。 4. 可靠性强:框架底层经过多次迭代和测试,稳定性和可靠性得到了保证。 5. 注重开发效率:源码提供了大量的开发工具和辅助函数,开发者可以快速编写出高质量的代码,提高开发效率。 6. 良好的文档支持:ThinkPHP v5拥有完善的官方文档,对开发者提供了详细的使用说明和示例代码,方便开发者快速上手。 总之,ThinkPHP v5后台源码是一款功能强大的后台管理系统框架,适用于各类Web应用程序的开发,具备高度的可扩展性、安全性和可靠性,并且能够提高开发效率,是PHP开发者的不错选择。 ### 回答3: thinkphp v5后台源码是基于thinkphp框架开发的一套用于搭建网站后台管理系统的源代码。thinkphp是国内非常有名的PHP框架之一,具有易于学习、灵活、高效等特点。v5是thinkphp框架的第五个主要版本,相较于前几个版本,v5在性能、安全性以及开发便利性方面都有很大的提升。 thinkphp v5后台源码提供了一套完整的后台管理系统模板,包括用户管理、权限管理、菜单管理、日志管理等功能。它提供了丰富的组件和插件,可以根据实际需求进行二次开发,快速构建出符合自己需求的个性化后台管理系统。 thinkphp v5后台源码采用了MVC(Model-View-Controller)的架构模式,将数据模型、视图和控制器进行了分离,使代码更加清晰易懂。它还支持数据库的操作,可以轻松实现对用户、文章、分类等数据的增删改查操作。同时,它还提供了丰富的验证和过滤机制,有效保障了数据的安全性。 thinkphp v5后台源码还引入了Composer,可以方便地管理代码依赖和第三方库的引入,提高了开发效率。它还使用了模板引擎,可以快速生成页面,实现前后端的分离。 总之,thinkphp v5后台源码是一套功能强大、灵活易用的后台管理系统开发框架,可以帮助开发者快速构建出符合自己需求的后台管理系统,提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值