本文讲述了thinkPHP5.0框架整体架构。分享给大家供大家参考,具体如下:

ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于:
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值...
下面的一些概念有必要做下了解,可能在后面的内容中经常会被提及。
入口文件
用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的生命周期,最常见的入口文件就是index.php,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口文件admin.php或者一个控制器程序入口think都属于入口文件。
应用
应用在ThinkPHP中是一个管理系统架构及生命周期的对象,由系统的 \think\App类完成,应用通常在入口文件中被调用和执行,具有相同的应用目录(APP_PATH)的应用我们认为是同一个应用,但一个应用可能存在多个入口文件。
应用具有自己独立的配置文件、公共(函数)文件。
模块
一个典型的应用是由多个模块组成的,这些模块通常都是应用目录下面的一个子目录,每个模块都自己独立的配置文件、公共文件和类库文件。
5.0支持单一模块架构设计,如果你的应用下面只有一个模块,那么这个模块的子目录可以省略,并且在应用配置文件中修改:
'app_multi_module' => false,
控制器
每个模块拥有独立的MVC类库及配置文件,一个模块下面有多个控制器负责响应请求,而每个控制器其实就是一个独立的控制器类。
控制器主要负责请求的接收,并调用相关的模型处理,并最终通过视图输出。严格来说,控制器不应该过多的介入业务逻辑处理。
事实上,5.0中控制器是可以被跳过的,通过路由我们可以直接把请求调度到某个模型或者其他的类进行处理。
5.0的控制器类比较灵活,可以无需继承任何基础类库。
一个典型的Index控制器类如下:
namespace app\index\controller;
class Index
{
public function index()
{
return 'hello,thinkphp!';
}
}
操作
一个控制器包含多个操作(方法),操作方法是一个URL访问的最小单元。
下面是一个典型的Index控制器的操作方法定义,包含了两个操作方法:
namespace app\index\controller;
class Index
{
public function index()
{
return 'index';
}
public function hello($name)
{
return 'Hello,'.$name;
}
}
操作方法可以不使用任何参数,如果定义了一个非可选参数,则该参数必须通过用户请求传入,如果是URL请求,则通常是$_GET或者$_POST方式传入。
模型
模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。
模型类并不一定要访问数据库,而且在5.0的架构设计中,只有进行实际的数据库查询操作的时候,才会进行数据库的连接,是真正的惰性连接。
ThinkPHP的模型层支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。
视图
控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。
视图通常会有一系列的模板文件对应不同的控制器和操作方法,并且支持动态设置模板目录。
驱动
系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。
行为
行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。
要执行行为,首先要在应用程序中进行行为侦听,例如:
// 在app_init位置侦听行为
\think\Hook::listen('app_init');
然后对某个位置进行行为绑定:
// 绑定行为到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test');
一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。
命名空间
ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4的自动加载规范。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
# thinkPHP5.0框架
# 架构
# 应用
# 模块
# MVC
# 驱动
# 行为
# 命名空间
# PHP程序员简单的开展服务治理架构操作详解(三)
# PHP程序员简单的开展服务治理架构操作详解(二)
# PHP程序员简单的开展服务治理架构操作详解(一)
# PHP数据源架构模式之表入口模式实例分析
# PHP架构及原理知识点详解
# php代码架构的八点注意事项
# 四种php中webservice实现的简单架构方法及实例
# php之深入理解架构布局讲解
# 多个
# 是一个
# 绑定
# 类库
# 操作方法
# 配置文件
# 应用程序
# 自己的
# 进阶
# 有一
# 是在
# 也会
# 相关内容
# 管理系统
# 是由
# 则是
# 才会
# 其他的
# 执行时间
# 要在
相关文章:
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何快速启动建站代理加盟业务?
如何在Golang中指定模块版本_使用go.mod控制版本号
江苏网站制作公司有哪些,江苏书法考级官方网站?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何用VPS主机快速搭建个人网站?
,柠檬视频怎样兑换vip?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星收费标准详解:套餐费用及年费价格表一览
北京制作网站的公司,北京铁路集团官方网站?
如何通过免费商城建站系统源码自定义网站主题与功能?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站之星展会模板:智能建站与自助搭建高效解决方案
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何通过商城自助建站源码实现零基础高效建站?
如何使用Golang安装API文档生成工具_快速生成接口文档
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何配置FTP站点权限与安全设置?
微信小程序 input输入框控件详解及实例(多种示例)
如何零成本快速生成个人自助网站?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Thinkphp 中 distinct 的用法解析
定制建站策划方案_专业建站与网站建设方案一站式指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
建站主机功能解析:服务器选择与快速搭建指南
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何通过商城免费建站系统源码自定义网站主题?
建站之星后台密码遗忘?如何快速找回?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
代购小票制作网站有哪些,购物小票的简要说明?
如何选择PHP开源工具快速搭建网站?
电商网站制作公司有哪些,1688网是什么意思?
高防服务器租用首荐平台,企业级优惠套餐快速部署
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速搭建支持数据库操作的智能建站平台?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
建站之星2.7模板快速切换与批量管理功能操作指南
常州企业建站如何选择最佳模板?
内部网站制作流程,如何建立公司内部网站?
制作企业网站建设方案,怎样建设一个公司网站?
建站之星如何修改网站生成路径?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
小型网站建站如何选择虚拟主机?
如何用西部建站助手快速创建专业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。