搜索
首页php框架ThinkPHPthinkphp是什么模式
thinkphp是什么模式Feb 14, 2022 pm 05:26 PM
mvcthinkphp

thinkphp是mvc模式。ThinkPHP基于MVC模式,并且均支持多层(multi-Layer)设计,是一个为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。

thinkphp是什么模式

本教程操作环境:Windows7系统、thinkphp v5.1版、Dell G3电脑。

ThinkPHP基于MVC模式,并且均支持多层(multi-Layer)设计。

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

M(model)– 模型类

模型

在ThinkPHP中基础的模型类就是Think\Model 类,该类完成了基本的CURD、ActiveRecord模式、连贯操作和统计查询,一些高级特性被封装到另外的模型扩展中。

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

模型定义

模型类并非必须定义,只有当存在独立的业务逻辑或者属性的时候才需要定义。

模型类通常需要继承系统的\Think\Model类或其子类,下面是一个Home\Model\UserModel类的定义:

    namespace Home\Model;
    use Think\Model;
    class UserModel extends Model{
    }

模型类的作用大多数情况是操作数据库,按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表的。

模型名 约定对应数据表(假设数据表的前缀定义是think_)
UserModel think_user
UserTypeModel think_user_type

V(view)– 视图层

模板定义

每个模块的模块文件是独立的,为了对模块文件更加有效的管理,ThinkPHP对模块文件进行目录划分,默认的模板文件定义规则是:

视图目录/[模块主题/]'控制器名/操作名/操作名+模板后缀

默认的视图目录是模块的View目录(模块可以有多个视图文件目录),框架的默认视图文件后缀是.html

在每个模块主题下面,是以模块下面的控制器名为目录,然后是每个控制器的具体操作模板文件,如:
User控制器的add操作 对应的模块文件就应该是:
./Application/Home/View/User/add.html
如果默认视图层不是View,设置如:
'DEFAULT_V_LAYER'=>'Template',//设置默认的视图层名称,对应的模板文件就变成了:./Application/Home/Template/User/add.html
模板文件的默认后缀是.html,可以通过TMPL_TEMPLATE_SUFFIX来配置。
'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
定义后,User控制器的add操作 对应的模板文件就变成是:./Application/Home/View/User/add.tpl

模板主题

模板主题可以对相同的控制器输出进行不同的布局和样式调整
一个模块需要支持多套模板文件的话,就可以使用模板主题功能。默认情况下,没有开启模板主题功能,如果需要开启,设置DEFAULT_THEME参数即可:

// 设置默认的模板主题 <br> 'DEFAULT_THEME'=>'default' <br>
采用模板主题后,需要在视图目录下面创建对应的主题目录,和不启用模板主题的情况相比,模板文件只是多了一层目录:

View/User/add.html //没有启用模板主题之前
View/default/User/add.html //启用模板主题之后

在视图渲染输出之前,我们可以通过动态设置来改变需要使用的模板主题。

//在控制器中动态改变模板主题
$this->theme(&#39;blue&#39;)->display(&#39;add&#39;);

模板赋值

如果要在模板中输出变量,必须在控制器中把变量传递给模板,通过assign方法对模板变量赋值

$this->assign(&#39;name&#39;,$value);//下面的写法是等效的
$this->name=$value;

assign方法必须在displayshow方法之前调用,并且系统只会输出设定的变量,其他变量不会输出(系统变量例外)。

系统变量可以通过特殊的标签输出,无需赋值模板变量

赋值后,就可以在模板文件中输出变量,如果使用的是内置模板的话,就可以这样输出:{$name}
输出多个模板变量,可以使用下面的方式:

$array[&#39;name&#39;] = &#39;thinkphp&#39;;
$array[&#39;email&#39;] = &#39;fdsf@123.com&#39;;
$array[&#39;phone&#39;] = &#39;123456789&#39;;
$this->assign($array);

模板渲染

模板定义后就可以渲染模板输出,系统也支持直接渲染内容输出,模板赋值必须在模板渲染之前操作。

渲染模板

渲染模板输出最常用的是使用display方法,调用格式:
display('[模板文件]'[,'字符编码'][,'输出类型'])模板文件的写法支持下面几种:

用法 描述
不带任何参数 自动定位当前操作的模板文件
[模块@][控制器:][操作] 常用写法,支持跨模块 模板主题可以和theme方法配合
完整的模板文件名 直接使用完整的模板文件名(包括模板后缀)

eg.

//不带任何参数 自动定位当前操作的模板文件
$this->display();

通常默认的视图目录是View

如果没有按照模板定义的规则来定义模板文件(或者需要调用其他控制器下面的某个模板),使用:

//表示调用当前控制器下面的edit模块
$this->display(&#39;edit&#39;);
//表示调用Member控制器下面的read模块
$this->display(&#39;Member:read&#39;);

如果我们使用了模板主题功能,那么也可以支持主题调用,使用:

\\表示调用blue主题下面的User控制器的edit模块
$this->theme(&#39;blue&#39;)->display(&#39;User:edit&#39;);

获取模板地址

T函数用于生成模板文件名,用法:
T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T函数的返回值为一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。
eg.

T(&#39;Public/menu&#39;);
//返回 当前模块/View/Public/menu.html
T(&#39;blue/Public/menu&#39;);
//返回 当前模块/View/blue/Public/menu.html
T(&#39;Public/menu&#39;,&#39;Tpl&#39;);
//返回 当前模块/Tpl/Public/menu.html
T(&#39;Admin@Public/menu&#39;);
//返回 Admin/View/Public/menu.html

在display方法中直接使用T函数

//使用T函数输出模板
$this->display(T(&#39;Admin@Public/menu&#39;));

T函数可以输出不同的视图分层模块。

获取内容

如果需要获取渲染模板的输出内容而不是直接输出,可以使用fetch方法。
eg.
$content = $this->fetch('Member:edit');
使用fetch方法获取渲染内容后,可以进行过滤和替换等操作。

 渲染内容

如果没有定义任何模板文件,或者把模板内容存储到数据库的话,就需要使用show方法来渲染输出。

show方法调用格式:
show(‘渲染内容’[,’字符编码’][,’输出类型’])
eg.$this->show($content);

【相关教程推荐:thinkphp框架

以上是thinkphp是什么模式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
thinkphp是不是国产框架thinkphp是不是国产框架Sep 26, 2022 pm 05:11 PM

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列Apr 20, 2022 pm 01:07 PM

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp的mvc分别指什么thinkphp的mvc分别指什么Jun 21, 2022 am 11:11 AM

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

实例详解thinkphp6使用jwt认证实例详解thinkphp6使用jwt认证Jun 24, 2022 pm 12:57 PM

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展插件有哪些thinkphp扩展插件有哪些Jun 13, 2022 pm 05:45 PM

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

一文教你ThinkPHP使用think-queue实现redis消息队列一文教你ThinkPHP使用think-queue实现redis消息队列Jun 28, 2022 pm 03:33 PM

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

thinkphp 怎么查询库是否存在thinkphp 怎么查询库是否存在Dec 05, 2022 am 09:40 AM

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

thinkphp3.2怎么关闭调试模式thinkphp3.2怎么关闭调试模式Apr 25, 2022 am 10:13 AM

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。