1.控制器创建原则:
基本原则:根据功能,原则上一个功能项对应控制器中的一个动作
可能多个功能共享一个动作添加和修改比较接近,根据条件来选择添加还是修改
可能需要辅助方法完成一个动作
基本原则:根据功能,按照数据表结构进行划分控制器类
基本原则,项目包含多个不同用户角色的功能,如果不区分模块,可能会导致控制器重名,影响代码阅读,按照不同角色功能划分不同模块
是否有必要创建模块
控制器文件如何分类
控制器动作如何制定
2.视图文件的架设
静态资源文件
组成:图片 css JavaScript
文件目录:public/子目录
布局文件
组成:页面头部,尾部,面包屑,正文
目录:模块目录/view/
视图文件
一般原则:控制器中的一个方法对应一个视图文件
3.数据库模型基本使用
连接数据库
使用配置文件
传入参数形式
实例化数据库操作对象
使用new Model()创建
使用M()函数创建
执行SQL原生查询
Query() 方法
Dump()函数测试结果
4.数据库基本操作
字符串查询
$table = M('tableName');
$results = $table -> where('id > 3')->select();
关联数组查询
$condition['id'] = array('neq','3');
$condition['uid'] = array('neq','1');
$results = $table -> where($conditon) -> select();
魔术方法查询
$results = $table -> getById('1');//只能获取指定条件的第一条记录
统计数据
$count = $table -> count();//统计表中数据
$count = $table ->max('id');
limit
$limit = $table -> limit(3) -> select();//前三条记录
$limit = $table -> limit(2,2) -> select();//第三条记录开始查询两个
order排序
$order = $table -> order('id desc') ->select();//id降序排列
创建和插入数据
Create():在内存中创建数据,不写入数据库,过滤掉无效字段(表中没有的字段)
工作流程:1.获取数据(POST参数或者用户传入的数据)2.进行数据校验3.把传入的数据放到当前对象的data属性中
参数:1.若没有参数,表示插入$_POST[]数据2.可以传入关联数组数据3.可以传入标准对象数据
Model::MODEL_INSERT Model::MODELUPDATE
返回值:创建好的数据对象组
可以直接为Model对象添加属性或修改属性,以实现添加内存数据的目的
Data():基本同create(),不进行数据校验
Add():把内存中的数据插入到表中
1没有参数,直接使用MODEL对象的data属性(create()和data()方法返回)
2附加条件
3是否覆盖标识(是否覆盖已经存在的主键数据)
4可以直接过滤掉数据表中不存在的字段
5直接使用add(),不会进行数据校验
//写入数据前进行校验
if($this -> create($data))
{
return $this-> add();
}
读取数据
Select():1不传参查询表中所有记录2.传一个参数select(1)主键为1的记录3.select(1,3,5)返回主键为135的记录4传入false返回当前查询的语句
Find():查询一条记录,不传入参数获取第一条记录,find(1)返回主键为1的记录
getField():只传入一个参数,获取第一条记录的值
where条件:1传入字符串 2传入数组或者对象,可以过滤掉非法字符。
limit():limit(1)1.获取指定条件的1条记录 limit(2,2)获取从第一个参数开始的2条记录
order():按照指定字段对记录进行排序,单字段排序和多字段排序
删除数据:删除成功返回删除的个数,失败返回false
$db = M(‘msgs’);
$results = $db –> where(‘id = 1’)-> delete();//删除id为1的记录
$results = $db –> where(‘1’)-> delete();//删除所有记录
$results = $db -> delete();//不传参数返回false
$results = $db -> delete('1,3,5')//删除主键为135的记录
修改数据:更新指定条件的数据
$data['name'] = "张三";
$results = $db -> where('id = 1') -> save($data)
若传参,表示更新后要满足的效果
若不传参,表示使用当前数据表操作对象data属性中的记录
更新条件,可以使用where显示指明更新条件,若无更新条件,save()参数中的记录包含主键,更新主键对应的记录,否则不更新。更新成功返回更新的记录数,更新失败,返回false
setField:更新个别字段的值
setInc加 setDec 减
5.模型操作类
作用:MVC分离相对彻底,逻辑清晰,适合分工合作,方便实现一些特性的效果(过滤,验证,自动完成)
创建模型类:
文件名:数据表名Model.class.php
目录:模块/model/目录
类名:class 数据表名Model extends Model
可选属性:tablePrefixtableName trueTableName dbName _validate(自动验证规则) _auto(自动完成规则)
添加方法用来实现业务逻辑
使用:new方法 D()函数
6.ActivRecord
表映射到类,记录映射到对象
ORM模型:对象关系映射模型
7.session处理
初始化:无需手动调用,除非有特殊需要的时候
设置值:session(键,值);
获取值:session(键);
删除值:session(键,null);
判断值是否存在:session(?键);
模板中使用session:判断session状态 输出session值
控制器中输出session dump($_SESSION);
present标签用于判断某个变量是否已经定义
<present name="Think.session.loginedUser"> 欢迎您,{$Think.session.loginedUser}! | <a href="/user/logout">注销</a> <else /> 您尚未登录(<a href='/home/user/login/'>登录</a>) 还没有用户名(<a href='/home/user/register/'>注册</a>) </present> 8.分页 页面跳转 <input type="submit" onclick="window.location.href='/home/msg/addmsg/';" value="添加一个新讨论话题"> 分页本质是:limit查询 sql语句:select * from msg offset size//从offset开始的size条记录 分页链接 /home/msg/index/page/1
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。