thinkphp基于什么模式-mile米乐体育

thinkphp基于什么模式

这篇文章主要介绍“thinkphp基于什么模式”,在日常操作中,相信很多人在thinkphp基于什么模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp基于什么模式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

本教程操作环境: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类的定义:

namespacehome\model;usethink\model;classusermodelextendsmodel{}

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

模型名约定对应数据表(假设数据表的前缀定义是think_)
usermodelthink_user
usertypemodelthink_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参数即可:

// 设置默认的模板主题
'default_theme'=>'default'

采用模板主题后,需要在视图目录下面创建对应的主题目录,和不启用模板主题的情况相比,模板文件只是多了一层目录:

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

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

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

模板赋值

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

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

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

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

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

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

模板渲染

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

渲染模板

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

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

eg.

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

通常默认的视图目录是view

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

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

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

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

获取模板地址

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

t('public/menu');//返回当前模块/view/public/menu.htmlt('blue/public/menu');//返回当前模块/view/blue/public/menu.htmlt('public/menu','tpl');//返回当前模块/tpl/public/menu.htmlt('admin@public/menu');//返回admin/view/public/menu.html

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

//使用t函数输出模板$this->display(t('admin@public/menu'));

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

获取内容

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

 渲染内容

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

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

到此,关于“thinkphp基于什么模式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图