基于MVC的ThinkPHP5框架研究

2020-01-03 10:09李秀珍
现代信息科技 2020年14期
关键词:框架模型

摘  要:ThinkPHP5是一款基于MVC三层架构的轻量级Web框架。它在ThinkPHP3.2版本之上重新改进了底层架构,提升了开发者使用体验。文章依据MVC三层架构思想,对ThinkPHP5数据模型的创建调用、控制器层前置操作的使用以及视图层网页模板布局进行了研究,并结合实际工作经验,总结了ThinkPHP5的优缺点,提出了ThinkPHP5后续改进措施。

关键词:MVC;ThinkPHP5;框架;模型

Abstract:Thinkphpp5 is a lightweight Web framework based on MVC three-tier architecture. On the foundation of ThinkPHP3.2,it has improved the underlying architecture and enhanced the developer taste. Based on the idea of MVC three-tier architecture,this paper studies the creation and call of ThinkPHP5 data model,the use of front-end operation of controller layer and the layout of web page template in view layer. Combined with practical work experience,it summarizes the advantages and disadvantages of ThinkPHP5,and puts forward the follow-up improvement measures of ThinkPHP5.

Keywords:MVC;ThinkPHP5;framework;model

0  引  言

随着网络的不断发展,通过浏览器发布程序日益流行,所以Web开发的地位不断提高。PHP作为Web开发的众多工具之一,有着得天独厚的条件,其既可以和前端代码一起编写,又可以后台处理数据,所以PHP一度成为“程序员最喜欢的编程语言”。

Web框架是指Web开发过程中文件、路由配置、数据库等资源固定的组织形式。ThinkPHP是基于PHP的框架之一,它的模式为开发人员节省了重写代码的時间。MVC既是编程思想,也是业务逻辑,M(Model)是数据层,V(View)是视图层,C(Controller)控制层,该思想将上述三层进行分离,允许单层修改而不影响其他层。

基于MVC的ThinkPHP框架主动借鉴其他优秀框架的特性,使其自身不断强大,用户量也与日俱增。因ThinkPHP是开源社区代码,发现缺点并加以改进方能使其长盛不衰。文章基于上述背景,对ThinkPHP三层架构进行了研究,希望对初学者有一些帮助。

1  ThinkPHP框架介绍

1.1  ThinkPHP的发展历史

ThinkPHP框架(原名FCS),由上海顶想信息科技有限公司开发和维护,基于MVC三层架构,遵循Apache 2开源协议发布,是为Web应用快速开发而打造的一款轻量级Web框架。[1]

ThinkPHP5版发布后,ThinkPHP3.2.2已经停止更新。在现阶段企业开发中,ThinkPHP5应用较多,受到较多开发者的青睐。

1.2  ThinkPHP5框架目录

Application为应用目录,大部分开发均在此目录下。ThinkPHP5支持多模块,在Application目录下可以新建其他模块,如Admin模块,在Admin里面再新建Controller、Model、View三层架构。

Public为公共目录,该目录下的Index.php是ThinkPHP5的入口文件,所有访问均从此文件开始。Config为配置目录,可以进行惯例配置、应用配置、应用扩展配置、应用场景配置、模块配置、模块扩展配置、模块应用配置、动态配置,上述配置优先级依次增大。Runtime为运行时目录,存放网站运行产生的日志以及临时文件。Extend为扩展目录,用于存放第三方类库。ThinkPHP为框架核心文件目录,此目录里的Library目录下的Think文件夹里面的内容为ThinkPHP5自带的类文件,包括Model类、DB类、View类等等。Vendor是Composer安装过程中生成的目录,通过Composer安装的所有类库都被安装在这个目录中。

2  MVC的概念

MVC的全名是Model-View-Controller,是模型层(Mo- del)-视图层(View)-控制层(Controller)的缩写。它是一种基于Web应用程序的框架模式,将应用程序的输入、处理和输出强制分开。[2]

模型层主要负责对数据库的数据进行CURD操作。视图层通常根据模型层的数据创建不同用户的显示。控制层根据视图层读取的数据控制用户的输入。[3]

3  MVC在ThinkPHP5中的应用

3.1  Model层

3.1.1  模型创建

模型是对实体的抽象描述,快速直观地展示出实体的特征。ThinkPHP5中,一个模型是数据库里的一个表的抽象,核心基类库存放在Model.php文件中[4]。在应用模块下创建模型目录Model,并在该目录下创建与数据表同名的类文件,在类文件中添加如下代码(假设在数据库中存在一个名为Employee的表,字段为id、name、age、dept,用于存放员工的id、姓名、年龄和部门):

模型创建成功后会自动继承基类Model中所有的属性和方法。

3.1.2  模型调用

模型可以采用实例化调用和静态调用。实例化调用即在控制器中创建模型对象,然后用模型对象处理相关业务。静态调用是通过静态查询直接将一个空模型转为数据模型,再调用相关方法完成数据操作。

3.2  控制层

控制层用于读取视图层内容、完成用户输入、处理数据模型。默认的访问控制层为app\index\controller\Index.php[5]。ThinkPHP5的默认入口文件即为Index.php文件。在此文件中我们可以利用前置操作来完成对某些属性的赋值。前置操作,顾名思义,即在某些函数执行之前需要执行的操作。使用该操作,必须要继承基类Controller,因基类Controller对该操作进行了定义。我们可以在Index.php文件中键入以下代码完成前置操作的定义和使用:

该前置操作除了example1和example3操作外,其他都有效。前置操作存在的根本目的是为了项目规范、方便扩展。

3.3  视图层

视图层主要展示数据加载到网页的效果,所以网页的模板布局显得尤为重要。在ThinkPHP5中模板布局有三种方式,分别是全局配置、模板中配置、控制器里配置[6]。

3.3.1  全局配置

全局配置即在Config文件中开启全局模板布局,需要通过以下数组中的键值对进行配置:

当使用该方式进行网页布局时,模板渲染流程为控制器—>布局模板—>用户模板。

3.3.2  模板中配置

使用该方式进行模板渲染时,首先需要关闭全局配置,防止布局配置重复。然后在View目录下创建自定义布局文件,最后在模板中使用以下代码:

3.3.3  控制器里配置

在控制器里面动态控制模板布局模式,代码如下:

当参数为true时,采用默认布局模板:layout.html;當参数为false时,临时关闭当前模板布局;当参数为文件名时,即采用用户自定义布局模板。

三种布局配置方式,全局配置和控制器里配置是在程序中实现模板布局,但模板中配置方式仅单纯通过模板标签实现在模板中使用布局,应根据项目的实际情况选择采用何种方式。

4  实际应用

“智慧校园”已经成为高校发展质量的重要标志之一,而“智慧校园”的体现则是管理与教学的网络化。随着系统的不断增多,后台维护工作日益繁琐,为了能够简化网站模块维护流程,作者开发了与我校校园网相关的后台管理系统,因连接校园网需要数据对接,现后台管理系统未进行实际应用,基于MVC的ThinkPHP5的后台管理系统如图1所示。

在Admin文件中基于MVC三层架构设置的模块如图3所示。

通过上图我们可以看出,模块定义布局、应用定义功能,增加模块不需要增写代码,只需要按照后台管理系统的模板添加内容即可。所有代码均被封装在三层架构之中,层内代码的修改不会影响其他层的数据及展示效果。基于MVC三层架构的ThinkPHP5使网站易于维护和扩展。

5  结  论

综合上述ThinkPHP5的研究,基于MVC三层架构使得ThinkPHP5减少了对核心基类库的依赖,提高了代码的简洁性。但同时需要注意,ThinkPHP5在数据模型的创建和调用过程中,需要手动关联数据库。模板布局模式众多但不支持继承,不方便前端网页输出。在后续改进中,可以对模型操作加以改进,创建自动关联数据库模型,模板布局中引入继承机制,与前端代码相结合,提高代码复用性。

参考文献:

[1] 龚翔,张清.基于ThinkPHP的通用CMS系统解决方案 [J].海峡科技与产业,2017(5):101-102.

[2] 刘袁,黄浩光,胡小宝.基于ThinkPHP的校园二手交易平台设计与实现 [J].计算机时代,2018(10):26-28+31.

[3] 常娜.基于ThinkPHP5框架的博客设计与开发 [J].数字技术与应用,2017(10):171-172.

[4] 郑俊生,姜敏.一种基于MVC模式Web开发框架WebWork的研究 [J].福建电脑,2008(08):120+132.

[5] 王昭英.基于MVC设计模式的ThinkPHP框架的研究与应用 [D].西安:西安建筑科技大学,2010.

[6] 张晓锋.基于MVC设计模式的WEB开发框架的研究及应用 [D].重庆:重庆邮电大学,2007.

作者简介:李秀珍(1986.12—),女,汉族,山东潍坊人,助教,硕士研究生,研究方向:计算机应用、软件开发。

猜你喜欢
框架模型
自制空间站模型
框架
浅谈框架网页的学习
基于Jmeter对Node框架性能的测试研究
模型小览(二)
圆周运动与解题模型
离散型随机变量分布列的两法则和三模型
一元一次不等式和一元一次不等式组