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_) |
---|---|
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参数即可:
// 设置默认的模板主题
'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方法必须在display
和show方法
之前调用,并且系统只会输出设定的变量,其他变量不会输出(系统变量例外)。
系统变量可以通过特殊的标签输出,无需赋值模板变量
赋值后,就可以在模板文件中输出变量,如果使用的是内置模板的话,就可以这样输出:{$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基于什么模式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!