thinkphp中的视图
在mvc里面的view是指我们的模板
这个地方的视图是指我们数据库中的视图
虚拟存在的一张表,里面有行和列,同时也有具体的数据
但数据并不是写在这个表里面的.这当中的行和列信息,也不是写在这张表里
他是通过你查询出来的表当中的数据,列还有行信息
"user"=>array('id','username','password');
'user_message'=>('id'=>'uid','userid','info','on'=>'user.id=user_message.userid');
$user=new UserViewModel();
$list=$user->select();
thinkphp缓存
$cache=Cache::getInstance('缓存方式','缓存参数');
$cache=Cache::getInstance('Xcache',array('expire'=>60));
$cache->set('名字','值');
$value=$cache->get('名字');
$cache->rm('名字');
$cache->name='值';
unset($cache->mame);
S('名字','数据','3600','类型')
如果有缓存则读取缓存数据,如果没有缓存则读取数据库的数据放入缓存
'DATA_CACHE_TYPE'=>'file'
'DATA_CACHE_TIME'=>'3600'
$value=S('list');
if(isset($value)){
$list=$user->select();
S('list',$list);
}
DATA_CACHE_SUBDIR=true
DATA_PATH_LEVEL=3;
S方法支持缓存有效期,在很多情况下,不需要有效期
专门进行文件缓存,快速缓存
F('data',$data,TEMP_PATH);
F('data',null);
$data=F('data');
F('user/data',$data)
关联模型操作
删除用户的时候,同时删除与用户有关的所有信息
一对一 有has.one 属于belongs.to
一对多 有has.many 属于belongs.to
多对多 many to many
class UserModel extends RelationModel{
protected $_link=array(
'good'=>array(
'mapping_type'=>has_one,
'class_name'=>'good',
'mapping_name'=>'good',
//'condition'
//foreign_key
//mapping_fields=>array()需要关联的字段
as_fields=>'title'
//mapping_limit
//mapping_order
//parent_key自引用的关联的关联字段
),
);
}
$list=$user->relation()->select();
$data['username']=>'bbbbbbb';
$data['password']=>'bbbbbb';
$data['good']=array(
array('title'=>'aaaa'),
array('title'=>'bbbbb'),
);
$list=$user->relation(true)->add($data);
$list=$user->relation(true)->save($data);
$list=$user->relation(true)->delete('1');
belongs to Good模型
class GoodModel extends RelationModel{
protected $_link=array(
'user'=>array(
'mapping_type'=>BElongs_to,
'foreign_key'=>'uid',
),
);
}
thinkphp的RBAC,基于角色的权限控制
RBAC中文全称,基于角色权限访问控制
Role-based Access Control
full扩展包
安全拦截器
认证管理器 识别不同的身份,你的用户名,密码,权限是否在授权范围内
决策访问管理器 即时模式,登陆模式
运行身份管理 单身份,多身份管理B/S
1.判断当前的操作(项目[应用],模块,动作(操作))是否需要认证
2.如果需要认证(判断用户是否登陆,判断用户是否有权限访问,)
3.委托认证来检验权限列表
4.获得该用户权限列表
5.判断用户是否有权限访问
难点在于,数据库设计,不是在代码如何写。
access加Pid
user表
节点(项目,模块,方法)之间的关系
access是控制各组是否能够访问某个模块,某个方法
在access表当中有的节点,有的用户组才能访问,在access表当中没有就不能访问
class CommonAction extends Action{
function _init
}
模板
thinkphp的模板引擎是内置的thinktemplate,它的风格是xml风格的模板引擎
在thinkphp加载模板之后,并且你的代码和模板整合之后,你可以设置缓存
输出方法并执行返回值
:function() :U('user/insert')
~function()
$think.get.id
$think.server.server中的变量
$think.env.env中的变量
{$think.__SELF__}
{$think.comfig.db_user}
{@var}输出session中的变量
{#var}输出cookie中的变量
{&var}输出配置文件中的变量
{%var}输出语言变量
公共的头信息
<include file='完整模板文件名'/>
导入js
<import type="js" file="Js.Util.A">
<volist name="list" id="vo" offset="5" length="2">
{$volist}
</volist>
<foreach name="list" item="vo">
</foreach>
<switch>
<case value="1">aaa</case>
<case value="2">bbb</case>
</switch>
<in name="a" value="1,2,3">aaa</in>
<present name="a">已赋值</present>
<empty name="a">
这是一个空变量
<else/>
</empty>
<defined name="MODEL_NAME">这个常量被定义</definde>
<if condition="$vo['id'] eq 5">
</else>
</if>
<volist name="list" id="vo">
<if condition="$vo['id']=1">
</if>
</volist>
<literal>
<if condition>
</if>
</literal>
<tagLib name="cx.html">
<select>
</select>
<tagLib>
<html :select name="id" option="list">
</html>
A方法
.shtml
url路由