ThinkPHP教学资料.docx
- 文档编号:13246612
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:18
- 大小:316.72KB
ThinkPHP教学资料.docx
《ThinkPHP教学资料.docx》由会员分享,可在线阅读,更多相关《ThinkPHP教学资料.docx(18页珍藏版)》请在冰点文库上搜索。
ThinkPHP教学资料
2014-1-20昨天内容回顾
1.创建应用项目
a)入口文件index.php
b)应用常量定义define(“CSS_URL”,XXX);
c)define(“APP_DEBUG”,true);调整模式为开发调试模式加载25文件
d)包含核心程序ThinkPHP/ThinkPHP.php
2.控制器和视图创建
a)UserController.class.php(命名空间)
b)Home/View/User/login.html
c)Home/View/User_login.html(在配置文件convertion.php里边有定义控制器和模板中间的连接符)
d)Home/View/User_register.html
3.路由解析
a)index.php?
m=XX&c=YY&a=ZZ基本get模式
b)index.php/XX/YY/ZZpathinfo路径模式
c)网址/XX/YY/ZZrewrite重写模式,index.php被省略
d)index.php?
s=/XX/YY/ZZ兼容模式
e)echoU(“控制器/操作方法”);查看具体url路由解析模式
4.配置文件(核心、公共、分组模块)及函数库文件
a)核心:
ThinkPHP/Conf/convertion.php
b)公共:
shop/Common/Conf/config.php
c)分组模块:
shop/Home/Conf/config.php
d)上边三个配置文件后边的配置变量会覆盖前边的配置变量
e)函数库文件:
f)核心:
ThinkPHP/Common/functions.php
g)公共:
shop/Common/Common/function.php
h)分组模块:
shop/Home/Common/function.php
5.模板与tp框架整合
a)拷贝模板代码到tp框架view目录
b)拷贝css、img、js静态资源到tp指定目录(shop/public)
c)在入口文件处把css、img、js路径定义为常量
d)在模板中通过常量把静态资源引入{$Think.const.常量名}
e)调整css文件里边的图片路径
f)常量使用注意:
在入口文件是先定义常量,再引入核心文件ThinkPHP.php
6.空操作和空控制器处理
a)空操作:
在控制器中定义方法function_empty($m,$arg)
b)空控制器:
定义控制器EmptyController.class.php_empty()方法
7.项目分组
a)HomeAdmin分组
8.跨控制器调用
a)A(“[分组模块/]控制器标志”)实例化控制器
b)R(“[分组模块/]控制器标志/操作方法”)实例化控制器同时直接调用指定方法
c)newUserController();直接实例化指定的控制器
9.后台“品”字形页面搭建
a)headleftright
b)index(frameset)
c)frame里边src=通过独立路由进行请求
数据模型model应用
mysql数据库操作(增、删、改、查)
【连接数据库配置】
convertion.php
config.php
1.在config.php做数据库连接配置
2.制作model模型
a)model本身就是一个类文件
b)数据库中的每个数据表都对应一个model模型文件
c)最简单的数据model模型类
3.字段缓存设置
tp框架执行过程中会使用到数据表中的字段信息,通过sql语句可以查询”showcolumsfromtable”,处于性能考虑,可以把字段缓存,避免每次重复执行sql语句。
4.可以根据情况对当前的model模型进行个性化设置
5.在入口文件定义一个调试输出函数,便于系统开发使用
【实例化model的三种方式】
1.$goods=new命名空间GoodsModel();
2.$goods=D(‘模型标志’);
a)$goods=D(“Goods”);
b)该$goods是父类Model的对象,但是操作的数据表还是sw_goods
c)$obj=D();实例化Model对象,没有具体操作数据表,与M()方法效果一致
3.$obj=M();
a)实例化父类Model
b)可以直接调用父类Model里边的属性,获得数据库相关操作
c)自定义model就是一个空壳,没有必要实例化自定义model
d)$obj=M(‘数据表标志’);实例化Model对象,实际操作具体的数据表
$obj=D(标志);
$obj=D();
$obj=M(标志);
$obj=M();
D()和M()方法的区别:
前者是tp3.1.3里边对new操作的简化方法;
后者在使用就是实例化Model父类
两者都在函数库文件定义ThinkPHP/Common/functions.php
注意:
如果没有对应的model模型文件类,也可以直接实例化model对象进行操作
D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。
【数据查询】
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组信息,当前数据表的全部数据信息
1.配置smarty
a)配置变量信息
i.convertion.php
ii.Behavior行为配置变量信息(页面底部日志显示配置、smarty配置)
iii.系统程序里边有一些零散的配置信息
b)在config.php里边配置smarty使用设置
模板引擎配置参数位置(不能直接修改,在config.php里边重写):
2.具体使用(从tp引擎变为smarty引擎)
a)css样式如果有{},需要使用{literal}标签禁止smarty解析
b)关键字$Think变为$smarty
c)tp引擎会对关键常量进行替换例如:
__CONTROLLER____MODULE__
smarty引擎不给替换,需要设置为:
{$smarty.const.__CONTROLLER__}
【各种查询条件设置】
$obj=D();创建对象
$obj->select();查询数据
select字段,字段from表名where条件group字段having条件order排序limit限制条数;
SELECT%DISTINCT%%FIELD%FROM%TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT%%UNION%%COMMENT%
$obj->field(字段,字段);查询指定字段
$obj->table(数据表);设置具体操作数据表
$obj->where(参数);参数就是正常sql语句where后边的条件信息
例如:
(“goods_price>100andgoods_namelike‘三%’”)
$obj->group(字段);根据字段进行分组查询
$obj->having(参数条件);having条件设置
$obj->order(‘pricedesc/asc’)排序查询
$obj->limit([偏移量,]条数)限制查询的条数
sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
以上方法理论上是父类Model的对应方法
父类model具体存在方法:
field()where()limit()
还有一些方法在__call()自动调用函数里边:
table()group()order()having()
在__call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行
以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)
$obj->limit(5)->field(‘id,name’)->order(‘priceasc’)->table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。
select()方法原理追踪
总结:
1.config.php做数据库连接配置convertion.php
2.制作model模型文件
3.实例化model模型对象
a)new命名空间\类名
b)D([模型标志]);
c)M([模型标志]);
4.数据查询select()
5.各种查询条件设置方法
6.smarty模板引擎切换(Behavior行为里边的配置变量)
【查询数据信息】
$info=$goods->where()->field(字段)->select();
select()方法
1.返回一个二维数组信息
2.返回全部数据表信息
3.给该方法传递参数
a)select(30)查询主键值等于30的记录信息
b)select(“10,12,14”)查询主键值在10、12、14范围的记录信息
4.find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组
为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法
5.having()方法设置查询条件,where()设置查询条件
having和where区别
1使用有先后顺序
2whereprice>100havingprice>100
3where设置条件,字段必须是数据表中存在的字段
4having设置条件,字段必须是select语句查询出来的字段可以使用
6.相关聚合函数count()sum()avg()max()min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:
$goods->where(‘goods_price>1000’)->count();大于1000元的商品的总数目
【实现数据添加add】
select()
add()该方法返回被添加的新记录的主键id值
save()
delete()
两种方式实现数据添加
1.数组方式数据添加
$goods=D(“Goods”);
$arr=array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//注意:
goods_name和goods_weight是数据表中字段名称
$goods->add($arr);
2.AR方式实现数据添加
a)ActiveRecord活跃记录
b)AR规定了程序与数据库之间的关系
c)什么是AR:
d)①一个数据表对应一个类model
e)②一条数据记录对应类的一个对象
f)③每个字段对应该对象的具体属性
g)tp框架的AR是假的
$goods=D(“Goods”);
$goods->goods_name=“htc_one”;
$goods->goods_price=3000;
$goods->add();
以上两种方式:
数组、AR,最后add都要把新记录的主键id值返回
【收集表单数据入库操作】
1.制作一个表单
2.通过$_POST收集信息
3.通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤
4.在create()收集表单方法内部会自动过滤非法的字段信息
【数据修改操作】
select()
add()
save()实现数据修改,返回受影响的记录条数
delete()
具体有两种方式实现数据修改,与添加类似(数组、AR方式)
1.数组方式
a)$goods=D(“Goods”);
b)$ar=array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c)$goods->where(‘goods_id>50’)->save($ar);
2.AR方式
a)$goods=D(“Goods”);
b)$goods->goods_id=53;
c)$goods->goods_name=“三星手机”;
d)$goods->goods_price=2000;
e)$goods->where(‘goods_price>10000’)->save();
以上两种方式如果可行,即要修改全部数据
以上sql语句从技术上可行,从业务上不可行(事故)
tp框架有智能考虑,以上情况的sql语句不被允许执行。
如何执行:
1明确告诉系统那条sql语句被update更新
2可以设置where进行sql语句更新操作
save()方法返回值
0:
之前没有问题,执行前后数据没有变化
自然数:
受影响的记录条数
false:
执行失败
【数据删除及执行原生sql语句】
select()
add()
save()
delete()返回受影响的记录条数
$goods->delete(30);删除主键值等于30的记录信息
$goods->delete(“10,12,13”);删除主键值等于101213的三条记录
$goods->where(“goods_id>60”)->delete()把符合条件的记录都给删除
执行原生sql语句
1.查询语句query()返回一个二维数组信息
2.添加、修改、删除execute()返回受影响的记录条数
$goods=D(“Goods”);
$sql=“select*fromsw_goods”;
$rst=$goods->query($sql);
$sql=“selectgoods_category_id,avg(goods_price)fromsw_goodsgroupbygoods_category_idhavingavg(goods_price)>1000”;
$goods->query($sql);
$sql=“updatesw_goodssetgoods_name=‘htc_two’wheregoods_id=100”;
$goods->execute($sql);
【数据修改具体实现】
通过路由给一个操作方法传递参数
http:
//网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值
以上路由是通过get形式给指定的操作传递了三个参数信息
原则三个参数信息接收的时候通过$_GET接收即可
例如:
$_GET[‘变量名1’];include()
以上参数信息接收太直白,不安全,需要按照框架规则使用下边的方式接收get参数信息
http:
//网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing
functionupd($name,$age,$addr){
$name;
$age;
$addr;
}
以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。
(除非参数有默认值)
修改商品信息步骤:
1.在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
2.在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
3.在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
4.在upd操作方法内部有两个逻辑:
展现表单、收集表单
【表单验证】
javascript
jquery
在服务器端通过tp框架实现表单验证
用户名、密码、重复密码、邮箱、qq、手机号码、爱好、学历
具体步骤:
1.制作表单
2.表单form数据通过create()方法收集(验证功能要求我们必须通过create()方法收集数据)
3.自定义数据model模型类实现具体验证规则
验证规则的第4个参数说明(012):
注意:
1.模型实例化通过new
2.调用create()方法才可以触发验证执行
总结:
1.数据添加add()两种方式:
数组、AR
2.数据修改
a)注意:
需要设置条件(主键id、where)
3.删除删除delete()
4.执行原生sql语句:
query()execute()
5.给操作方法传递参数/Admin/User/login/id/100/name/tom
a)functionlogin($id,$name)
6.表单验证
作业:
1.在商城后台实现数据的列表查询、删除、添加、修改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ThinkPHP 教学 资料