• 河南网站建设-郑州网站建设-上海网站建设-SEO优化-网络营销-经典美文

  • 专注网站建设 服务热线: 13061801310

当前位置:东东网 > 近期动态 > 网站建设观点 > 正文

MVC开发模式与ThinkPHP5.0

发布时间:2018-11-07 | 发布者: 东东网| 浏览次数:

THhinkPHP5.0是基于MVC(模型-视图-控制器)方式来组织的,MVC的全称是Model View Controller,是模型-视图-控制器的缩写,是一种软件设计典范,用一种业务逻辑,数据,界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里,在改进和个性化定制界面以及用户交互的同时,不需要重新编写业务逻辑。MVC被独特地发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化用户界面的结构中。而MVC开发模式是一种使用MVC设计创建Web应用程序的模式。

传统的Web开发中,我们将数据的处理和数据显示写在一起,模型和视图是直接关联的,视图直接从模型获取数据并显示,代码复杂,维护困难,不利于团队分工,开发效率低

传统开发模式类似如下代码:

而使用MVC开发时,情况则发生了变化,模型和视图依旧负责数据处理和数据显示,但它们之间并不直接进行数据交换,而是借助控制器完成,控制器首先从模型中获取数据,然后根据数据的类型或者格式等选择合适的视图进行显示,从而达到模型与视图的完全分离,而是由控制器完成数据获取与展示

Model是应用程序中用以处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据,View是应用程序中处理数据显示的部分,通常视图是一句模型数据创建的。Controller是应用程序中处理用户交互的部分。通常控制器负责从视图中读取数据控制用户输入并向模型发送数据。

ThinkPHP的应用目录:

 

 

我们可以注意到在public目录下有一个index.php,该文件是应用的入口文件,几乎所有的PHP MVC框架都会采用单一入口(网站的所有访问都会经过该文件)进行项目访问,ThinkPHP也不例外。入口文件主要完成以下事情:

1. 定义框架路径,项目路径

欧冠买球投注 2. 定义调试模式和应用模式(可选)

3. 定义全局常量(可选)

4. 加载框架入口文件

欧冠买球投注 Index.php代码如下:

 

 

欧冠买球投注 当我们加载一个初始的thinkphp5框架时,显示出的是一个“欢迎使用ThinkPHP!”

大致的加载流程如下:

1. Web服务器加载默认欧冠买球投注

2. Index.php加载ThinkPHP.php,框架开始运行

3. 当未指定模块,控制器和动作时,框架采用默认配置:Home模块,Index控制器,index动作

欧冠买球投注 4. 根据APP_PATH找到Application目录,再根据模块名,控制器名和动作名找到Home目录下的IndexController.class.php,并执行其中的index方法。

ThinkPHP中的控制器:

作为MVC模式中最核心的控制器,起着沟通视图和模型的作用一个好的MVC架构中,View永远不应该直接操作Model,而应该通过View->Controller->Model的方式进行操作。一方面减少了耦合程度,另一方面之后对View进行重构时不会影响到Model。

一般来说ThinkPHP的控制器就是一个类,该类位于模块/Controller文件夹下,而操作指的是控制器的一个public方法,以下截图是最近笔者在做的一个项目的实例:(v1是版本号便于版本控制)

 

 

由上图我们可以发现控制器的定义非常简单,只需满足两个条件:(1)文件是一个php类并存放在模块/Controller文件夹下(2)继承ThinkPHP的Controller及其子类。

ThinkPHP中的视图:

视图功能由thinkView类配合视图驱动(模板引擎)类一起完成,目前的内置模板引擎包括PHP原生模板和Think模板引擎

因为新版的控制器可以无需继承任何的基础类,因此在控制器中如何使用视图取决于你怎么定义控制器。

欧冠买球投注 1. 继承thinkcontroller类

欧冠买球投注 如果你的控制器继承了thinkController类的话,则无需自己实例化图类,可以直接调用控制器基础类封装的相关视图类的方法。如:

fetch渲染模板输出

display渲染内容输出

assign模板变量赋值

欧冠买球投注 engine初始化模板引擎

2. 助手函数:

如果只是需要渲染模板输出可以使用系统提供的助手函数view

return view('hello',['name'=>'thinkphp'])

助手函数调用格式:

欧冠买球投注 view('[模板文件]'[,'模板变量(数组)'][,模板替换(数组)])

ThinkPHP中的模型:

模型类:ThinkModel配合数据库中间层ThinkDb实现了完整的ORM功能,包括CURD和ActiveRecord实现。

基础模型类Model的设计非常灵活,无需进行任何模型定义,就可以进行相关数据表的ORM和CURD操作,只需要在封装单独的业务逻辑的时候,模型类才必须是被定义的。

新版采用了PHP的Trait特性实现了模型的动态组装,可以更加灵活的实现模型的扩展

欧冠买球投注 当我们需要使用模型时,首先我们需要在database.php配置文件中进行相关的设置:

而模型的定义方面,如果我们仅仅需要实现对数据表的CURD操作的话,实际上根本不需要定义模型类,直接实例化基础模型类即可。 只有当你需要额外定义模型的属性或者方法逻辑的时候,才需要额外定义模型类。模型类一般位于模块的 model 目录下面,类名通常与数据表的名相同

例如:

 

欧冠买球投注 当我们需要使用模型时,我们需要在对应的控制器中引入该模型类,使用相关的查询语句,核心ThinkModel除了基本的CURD和AR查询之外, 还提供了一些统计函数、getField方法,及动态查询方法,使用如下:

欧冠买球投注 $User = D('User');

$User->count();

$User->getField('name');

$User->getByName('thinkphp');

$User->getFieldByName('thinkphp','name');

 

转载请标注:东东网——MVC开发模式与ThinkPHP5.0

澳门棋牌 澳门棋牌真人赢钱游戏 澳门棋牌游戏 澳门棋牌 河北快3 河北快3 河北快3 河北快3 吉林快3 吉林快3 吉林快3 吉林快3 新疆11选5 新疆11选5 新疆11选5 新疆11选5 广东11选5 广东11选5 广东11选5 广东11选5 上海11选5 上海11选5 上海11选5 上海11选5 甘肃11选5 甘肃11选5 甘肃11选5 甘肃11选5 江苏11选5 江苏11选5 江苏11选5 北京11选5 北京11选5 北京11选5 北京11选5 云南11选5 云南11选5 云南11选5 云南11选5 陕西11选5 陕西11选5 陕西11选5 陕西11选5 电子游戏 电子游戏 电子游戏 电子游戏 欧冠赛程表 欧冠投注平台 欧冠投注官网 欧冠投注网 欧冠投注网 欧冠决投注 欧冠在哪里投注 体彩足球欧冠 足彩欧冠平台 欧冠决投注 欧冠决投注平台 欧冠决投注 欧冠决投注 欧冠外围下注app 欧冠外围下注app 欧冠外围下注app 欧冠app 欧冠外围app 欧冠赔冠率 欧冠赔冠率 欧冠赔冠率 欧冠买球投注 欧冠买球投注 欧冠买球投注 欧冠买球投注 江苏体育彩票 江苏体育彩票网 江苏体育彩票 江苏体育彩票 浙江体育彩票 浙江体育彩票网 浙江体育彩票 浙江体育彩票 365体育投注 365体育投注 365体育投注 365体育投注 365体育投注 bet356体育在线网址 bet356体育在线网址 365体育投注 365体育投注 365体育投注网址 365体育投注网址 bt365体育投注 bt365体育投注 欧冠投注体育平台 欧冠投注体育平台 欧冠投注平台官网 欧冠投注平台官网 欧冠赛事投注 欧冠赛事投注 欧冠竞彩app 欧冠竞彩 欧冠竞彩 欧冠足彩 欧冠足彩网 必威体育游戏 必威体育 必威体育 必威体育 广东11选5 广东11选5 广东11选5 广东11选5 重庆11选5 重庆11选5 重庆11选5 重庆11选5 甘肃快3 甘肃快3 甘肃快3 甘肃快3 新疆福利彩票 新疆福利彩票 新疆福利彩票 新疆福利彩票 云南11选五5 云南11选五5 云南11选五5 云南11选五5 欧冠最新赛程 欧冠最新赛程 欧冠最新赛程 欧冠最新赛程 体育在线投注 体育在线投注 体育在线投注 体育在线投注 电子游戏平台 电子游戏平台 电子游戏平台 电子游戏平台 辽宁体彩网 辽宁体彩网 辽宁体彩网 辽宁体彩网 365体育投注 365体育投注 365体育投注 best365体育投注 best365体育投注 best365体育投注 欧冠投注体育平台 欧冠买球投注 欧冠买球投注 欧冠买球投注 欧冠买球投注 欧冠买球投注 必威体育 必威体育 必威体育 贝博足彩app 贝博竞彩 贝博足彩app 嘉博国际 嘉博国际 电子游戏厅 电子游戏厅 电子游戏厅 电子游戏厅 电子游戏平台 电子游戏平台 电子游戏平台 电子游戏平台 网上游戏厅 网上游戏厅 网上游戏厅 网上游戏厅 网上在线打鱼 网上在线打鱼 网上在线打鱼 网上在线打鱼 电玩城捕鱼 电玩城捕鱼 电玩城捕鱼 电玩城捕鱼 官方彩票app 官方彩票app 官方彩票app 官方彩票app 360彩票网 360彩票网 360彩票网 360彩票网 欧冠赔冠率 欧冠赔冠率 欧冠赔冠率 欧冠赔冠率 亚博足彩APP 亚博足彩APP 亚博足彩APP 亚博足彩APP 易游电子游戏 易游电子游戏 易游电子游戏 易游电子游戏 欧冠竞彩app bt365体育投注 bt365体育投注 365在线体育网址 365在线体育网址 必威体育 必威体育 辉煌娱乐网址 辉煌娱乐游戏 河北快3 河北快3 广东11选5 广东11选5