【PHP】thinkPHP6中的MVC思想的小案例

社区征文开发与运维域名与网站
前言

        最近在给学生讲课时候,想找个最简单thinkphp框架案例,来给学生们演示一下MVC思想的具体应用,但从网上找了好久,仍旧没有找到一个满意的案例。没办法,自己只能结合thinkphp6的官方文档动手写了一个简单的demo,以便在上课时候,能够让学生快速理解MVC的思想应用,增强动手能力。由于thinkphp框架主要是基于MVC思想的,所有,本演示demo对thinkphp初学者来说,也是一个非常好的应用案例。

第一步        知识内容回顾

1、什么是MVC

        所谓的MVC指的是Model、View、Controller三个单词的首字母缩写。而MVC框架为开发者在设计应用程序的时候提供了一个基本的思想。通过MVC思想,我们可以把软件分割成3个部分,即Model、View和Controller,经过这样的分割后,我们就可以将数据操作和视图展示进行代码分离,便于逻辑区分,而M层和V层之间的联络,我们就可以通过在C层中设计自己的逻辑来实现。这样分割后,各个部分模块的分工就很明确了,其中的每个模块都只负责整个数据处理流程的一个部分功能。具体来说:

        V(View)指的是视图层,即展示给用户的软件界面,主要用来与用户进行交互,比如说,按照一定方式展示数据,或者给用户提供一个控件来接受用户的操作。

        M(Model)指的是模型层,这个模块主要用来实现与后台数据库的数据交互,比如说,对数据库的增删改查等基本操作。

        C(Controller)指的是控制层,这个层处在M层和V层之间,主要用来接受V发送过来的请求并根据请求给出响应结果,如果需要操作数据库,则直接转发响应操作到M层即可。这一层并不会进行实质业务的处理。

        三者之间的联系图如下:

picture.image

2、thinkphp框架

        ThinkPHP框架是一个快速、兼容而且简答的轻量级国产的PHP开发框架,能够简化企业级应用开发和敏捷WEB应用开发。thinkphp使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

        thinkphp6.0的框架结构如下图所示:

picture.image

第二步        提前准备工作

1、运行环境的搭建

1.1、phpstudy安装

        由于PHP环境配置相对比较复杂,因此,我们采用phpstudy这样一个PHP程序集成包来快速完成基础环境搭建。phpstudy程序包中集成了Apache、PHP、MySQL等,可以实现一次安装、无需配置即可。具体安装操作请参考官网:www.xp.cn。

picture.image

1.2、composer安装(windows下)

        由于thinkphp从6.0版本开始,要求必须通过Composer方式来实现安装和更新,所以在安装thinkphp6之前需要先安装composer。具体安装操作可以参考官网:www.phpcomposer.com。

picture.image

1.3、thinkphp6安装

        打开WEB根目录。具体操作:找到phpstudy的安装目录,打开其路径下的WWW文件夹,这一层即是我们所要运行的web根目录。在该目录下的地址栏中输入cmd,然后回车,打开命令行界面。具体操作如下:

picture.image

        在打开的命令行界面中,输入如下命令:composer create-project topthink/think tp6,其中tp6是自己定义的网站名字。这个目录就是通常所说的应用根目录。

picture.image

2、数据库的创建

        通过phpstudy实现本demo中所用到的数据库的创建。具体操作为:首先打开phpstudy软件,在【首页】栏中启动Apache和MySQL两个,然后,切换到【数据库】栏中,点击上方的【创建数据库】,录入相关信息后,点击确认。如图所示:

picture.image

        返回【首页】,点击【数据库工具】,选择里面的phpMyAdmin(如果没有安装,请在【软件管理】栏中安装),用刚才创建的用户名和密码进行登录。

picture.image

        登录成功后,在spd数据库中创建名为score的数据表,表中结构及数据如图所示(也可以通过下载文后的资源,把相关数据库导入进去):

picture.image

 第三步        MVC下的小案例(demo)

1、创建应用目录结构

        在应用根目录下(即上面所说的tp6目录下),打开app目录,然后在里面分别创建controller(已经存在了不用创建)、model、view三个目录。这样就完成了demo应用的目录结构创建。如图所示:

picture.image

2、C:controller文件的构建

        在controller目录下,创建Index.php文件。并在其中编写如下代码:

picture.image

        注意:

        (1)文件中的类名,要跟创建的文件的类名保持一致,按照驼峰法进行命名(即首字母大写)。

        (2)在类中定义的index()方法代码解读:

          第一句代码:是创建Score对象。该Score类是在下面的model中定义的,所有类上面有use app\model\Score;这个语句类引入。

          第二句代码:是调用Score对象的getUserName()方法来获取用户名的,其中传入的参数是用户的uid。

          第三句代码:是给View视图进行全局赋值的,把获取到的$name变量的值,赋值给name,供View视图层来使用。

          第四句代码:是把第三句的变量注入到View视图层中。

3、M:model文件的构建

        在M层上,我们要操作MySQL数据库中的数据,所以要先完成与数据库的连接。首先找到应用根目录下(tp6目录下)的.example.env文件,进行重命名为.env文件(直接操作可能无法更改,可以通过应用程序打开后重命名)。具体的数据库连接配置为:        

picture.image

        在完成文件重命名后,打开.env文件,并在里面配置好数据库的连接。以上面创建的数据库为例,具体的数据库连接配置为: 

picture.image

        在完成相关配置后,进入到model目录下,创建Score.php文件。并在其中编写如下代码:

picture.image

        注意:

        (1)在model目录中定义的文件名,要跟数据库中表的名字保持一致,并且首字母大写,同时,也要与文件中定义的类名保持一致。这是thinkphp模型中操作数据库表的一种规则。

        (2)在类中定义的getUserName()方法代码解读:

                第一句代码:调用自身对象去查询数据库中uid=181101的记录,并通过toArray()来转换成数组。

                第二句代码:返回查询结果中的uname字段的值,读取方式按照数组的写法来用。其中的uname对应数据库中score表中的uname字段。

4、V:view文件的构建

       由于thinkphp6中仅仅内置了PHP原生模板引擎,所以,我们需要单独安装think-view模板引擎驱动。找到应用根目录(tp6目录下),打开命令行界面,运行如下命令,即可完成安装。

      composer require topthink/think-view

        完成安装后,在view目录下,创建一个Index文件夹,并在里面创建一个index.html文件,完成代码编写。如图所示:

picture.image

        注意:

        (1)在view目录下的规则:要对用controller中的文件,一个controller中的文件对应view下的一个文件夹,其中view下的文件夹名字要跟controller中的文件名字保持一致。

        (2)在view/Index目录下的index.html命名说明:html文件的命名可以对应到controller中的相应方法上,两者保持一致,这样在使用View::fetch(参数)时,参数就可以省略不写了。

总结语

        thinkphp框架中的MVC模式里面涉及到很多约定好的规则,比如controller中类文件的命名要跟其中的类名保持一致,也要跟view视图中的目录保持一致等。demo中只是给大家讲解了很简单、很固定的约定规则。具体的规则及参数配置,可能需要大家再深入学习。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论