ThinkPHP5学习总结3—— ThinkPHP5框架总览

摘要:
架构总览ThinkPHP5基于MVC来组织;模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配!

架构总览

ThinkPHP5基于MVC(模型 — 视图 —控制器)来组织;
ThinkPHP5学习总结3—— ThinkPHP5框架总览第1张

模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配!

1.URL默认采用PATH_INFO方式

http://域名 /入口文件 /模块/控制器/操作

入口文件:应用的入口,如index.php
模块:应用单元,如 user对应一个目录
控制器:控制单元,如 Index 一般为类文件
操作:执行单元,如 add()控制器类文件中的执行方法

举例:http://tp5.com/index.php/index/user/list/ id/10/name/peter

id/10/name/peter是参数列表

2.常用术语
应用,入口
模块,控制器,方法,参数
模型,视图

2.1入口文件(index.php)

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

2.2应用(application)

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

2.3模块(module)

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

2.4控制器(controller)

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

2.5操作(action)

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

2.6模型(model)

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

2.7视图(view)

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

免责声明:文章转载自《ThinkPHP5学习总结3—— ThinkPHP5框架总览》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python元类深入解析Linux 安装SonarQube下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【thinkPHP5实现文件上传】

上传文件 ThinkPHP5.0对文件上传的支持更加简单。 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。 假设表单代码如下: <form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type=...

ThinkPHP5与JQuery实现图片上传和预览效果

内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下  先上效果图: html和js代码如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="u...

ThinkPhp5 mongodb 使用自定义objectID出错解决

在Tp5中使用mongodb 使用自定义ObjectId时报错:Cannot use object of type MongoDB\BSON\ObjectID as array 查询源码发现在topthink/think-mongo/src/Builder.php中发现 它原来的parseData方法这样写的: protected function...

thinkphp5中引入第三方类库

// 引入 extend/qrcode.php Loader::import('qrcode', EXTEND_PATH); // 助手函数 import('qrcode', EXTEND_PATH); // 引入 extend/wechat-sdk/wechat.class.php Loader::import('wechat-s...

thinkphp5实现文件上传

原理:通过form表单的enctype = "multipart / form-data"属性将文件临时放在htdocs文件夹的tmp目录下,再通过后台的程序将文件保存在自己设定的新的文件夹中。前端页面   前端页面 前端代码<!--上传文件--><!DOCTYPE html><html lang="en"><...

ThinkPHP5——URL参数带中文,报"模块不存在"

我在URl的传参时参数有中文,结果报"模块不存在",一般情况是没有这种错误的,但今天让我遇到就顺手解决 ThinkPHP5.0支持在规则路由中为变量用正则的方式指定变量规则,弥补了动态变量无法限制具体的类型问题,并且支持全局规则设置 报错的原因很简单,application oute.php里设置了全局变量规则,它是下载就有的 <?php retu...