speedphp学习笔记.docx
- 文档编号:3808236
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:20
- 大小:26.32KB
speedphp学习笔记.docx
《speedphp学习笔记.docx》由会员分享,可在线阅读,更多相关《speedphp学习笔记.docx(20页珍藏版)》请在冰豆网上搜索。
speedphp学习笔记
学习笔记
//定义了MY_IMG_PATH的常量,这样开发者就可以在全局其他地方使用这个常量值。
define("MY_IMG_PATH",'http:
//localhost/images/');
//载入md5password的函数定义
import('md5password.php');
spRun是SpeedPHP框架第三版的时候加入的一个核心函数。
spRun在整个框架中的作用非常大,它将程序定义、配置处理与应用程序执行分开,使得:
开发者可以更轻松地定义和引入全局内容。
可以在执行程序之前,执行一些全局性质的操作。
使得框架执行流程更加清晰,可控。
spRun();
PHP“框架”是phpframework,泛指PHP的一种辅助应用程序,比如SpeedPHP框架
HTML的“框架”是frameset,iframe等,泛指HTML的一个标签,主要用于在页面内显示别的网页。
SpeedPHP框架的URL地址构造函数spUrl的使用
1.普通例子
在程序中:
echospUrl("main","show");
在Smarty模板中:
<{spUrlc=maina=show}>
输出:
/index.php?
c=main&a=show
2.使用传递参数
在程序中:
echospUrl("guestbook","page",array("gid"=>"3","myname"=>"jake"));
在Smarty模板中:
<{spUrlc=guestbooka=pagegid=3myname="jake"}>
输出:
/index.php?
c=guestbook&a=page&gid=3&myname=jake
3.在二级目录中使用SpeedPHP框架的时候
和在顶级目录使用spUrl一样,无需配置。
如在程序中:
echospUrl("main","show");
在Smarty模板中:
<{spUrlc=maina=show}>
输出将是:
/sp/index.php?
c=main&a=show
spArgs代替$_GET/$_POST的数据获取
spArgs是controller继承类的一个扩展方法,可以有两个参数,第一个参数是将要获取的参数名称,为空则返回全部参数的数组。
第二个参数是默认值,当需要获取的参数为空时,将返回该默认值。
表单中我们将提交name,title和contents等参数。
然后在程序当中:
$name=$this->spArgs("name","jake");//可以获取到表单的name,第二个参数是当name没有值时返回的默认值
$title=$this->spArgs("title","这里是默认标题");//可以获取到表单的title
if($name=$this->spArgs("name")){
//name被提交
}else{
//没有提交
}
//如果spArgs没有输入参数,将返回全部的提交参数:
dump($this->spArgs());//该语句在开发中常用作调试用
//SpeedPHP框架的spController提供了jump、success、error等多种跳转模式。
$this->jump(spUrl('main','index'));//跳转到首页
$this->jump("");//跳转到
PHP框架中session的使用
PHP框架中session是一个数组,可以通过$_SESSION['key']=$value的方式对session赋值。
如:
$_SESSION['myname']='Helllo';
echo$_SESSION['myname'];
PHP框架中cookie的使用
cookie在程序中使用通常作为“保持登录”或是跟踪访问者操作等。
和session不同,cookie存放的位置,是在访问者的浏览器缓存中。
cookie的使用有几个要素:
过期时间、路径、域
cookie可以通过setcookie函数设置:
setcookie(COOKIE名字,COOKIE值,过期时间,路径,域名);
过期时间:
默认是会话时间长度,和session相同。
路径:
默认是“/”,设置在当前域名下COOKIE生效的路径。
域:
域名,默认是当前网站域名。
可以设置成“”来使得整个网站(包括二级域名)都可以读取该COOKIE。
1
$value='这里是设置的值';
2
setcookie("TestCookie",$value);//该cookie的过期时间是会话时间
3
setcookie("TestCookie",$value,time()+3600);//该cookie的过期时间是1小时,当前时间time()加3600秒(1小时)
4
setcookie("TestCookie",$value,time()+3600,"/bbs/","");//该cookie的过期时间是1小时,只在及二级域名的bbs目录下使用。
cookie值可以用$_COOKIE数组来获取。
1
echo$_COOKIE['TestCookie'];
json_encode函数会将普通数据编码,成为JSON格式的数据。
(以下例子来自于)
viewsource
1
php
2
$arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
3
echo$arr);
4
?
>
json_decode函数可以将JSON格式的数据,还原成普通的变量数量。
(以下例子来自于)
viewsource
1
php
2
$json='{"a":
1,"b":
2,"c":
3,"d":
4,"e":
5}';
3
4
var_dump($json));
5
?
>
显示:
object(stdClass)#1(5){
["a"]=>int
(1)
["b"]=>int
(2)
["c"]=>int(3)
["d"]=>int(4)
["e"]=>int(5)
}
建立表驱动模型类
php
2
classgbextendsspModel{
3
var$table="gb";
4
var$pk="gid";
5
}
6
?
>
这些代码可以直接复制粘贴来使用,作为其他的表模型类的样板。
classgbextendsspModel,定义了一个名称为gb的PHP类,并且派生自spModel这个核心类。
表驱动模型类都必须是spModel的派生类。
简单来说就是“extendsspModel”这些代码是必须的。
var$table="gb",定义gb类对应的表名。
当然加上数据表前缀的话,该表的全名应该是“spgb_gb”。
var$pk="gid",定义该数据表的主键名称,一般数据表的主键都是数值类型并且是自增量。
以上三个设置,是每个表驱动模型类都必须的,而且表驱动模型类一般是放置在应用程序目录下model的目录里面。
当然这也在应用程序配置中修改该位置。
find——从数据表中查找一条记录
1
//首先需要准备查找条件
2
$conditions=array('name'=>'小李');
3
$gb=spClass('gb');//初始化留言本模型类
4
$result=$gb->find($conditions);//查找
5
dump($result);//查看结果,
6
echo$result['contents'];//直接输出结果中的留言内容,对应字段contents
findAll——从数据表中查找记录
findAll与find的区别在于findAll是返回全部符合条件的记录,而find仅是返回findAll结果的第一条记录。
举例:
SELECT*FROMspgb_gbWHEREname='jake'ORname='lin'
那么,如何使用findAll来查询呢?
1
//首先需要准备查找条件
2
$conditions="name='jake'ORname='lin'";
3
$gb=spClass('gb');//初始化留言本模型类
4
$result=$gb->findAll($conditions);//查找
5
dump($result);//查看结果,
1.复合OR和AND的查询
查询名称为jake或lin的留言,而且留言的时间是在5月3日之后。
SELECT*FROMspgb_gbWHERE(name='jake'ORname='lin')ANDpost_time>'2010-05-0300:
50:
55'
而findAll就是:
$conditions="(name='jake'ORname='lin')ANDpost_time>'2010-05-0300:
50:
55'";
$results=$gb->findAll($conditions);
2.like模糊查找
模糊查找在留言内容(contents)中有“SpeedPHP”一词的留言。
SELECT*FROMspgb_gbWHEREcontentslike'%SpeedPHP%'
而findAll是:
$conditions="contentslike'%SpeedPHP%''";
$results=$gb->findAll($conditions);
添加删除修改查询
create——在数据表中新增一行数据
用法:
create($row)
参数:
$row,数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。
例子:
01
/**首先是准备新增的数据
02
*表中的gid因为是自增量,所以没必要去赋值
03
*replay因为是可为空,并且刚留言也不会有回复,所以也可以不赋值
04
*数组中的键是字段名称,值是数据
05
*/
06
$newrow=array(//PHP的数组
07
'name'=>'jake',
08
'contents'=>'这是我的第一个留言',
09
'post_time'=>date('Y-m-dH:
i:
s'),
10
'post_ip'=>$_SERVER['REMOTE_ADDRESS'],
11
);
12
$gb=spClass('gb');//初始化留言本模型类
13
$gb->create($newrow);//进行新增操作
返回:
新增成功则返回新增的自增量ID,失败则返回FALSE。
update——修改数据,该函数将根据参数中设置的条件而更新表中数据。
用法:
update($conditions,$row)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
$row,数组形式,修改的数据,此参数的格式用法与create的$row是相同的。
在符合条件的记录中,将对$row设置的字段的数据进行修改。
例子:
1
//将小李的第一条留言,也就是gid=12的留言的内容修改成“我的第一条留言”。
2
//构造查找条件
3
$conditions=array('gid'=>12);//思考为什么不能用'name'=>'小李'来作为条件呢?
4
//设置需要更新的字段,注意没必要更新的字段请不要设置。
这里我们仅仅修改contents(内容)对应的数据。
5
$row=array('contents'=>'我的第一条记录');
6
$gb=spClass('gb');
7
$gb->update($conditions,$row);
原来的数据表:
12小李我的留言2009-10-2610:
04:
53218.82.32.12
13小李我的第二条留言2009-10-2610:
04:
53218.82.32.12
经过执行$gb->update($conditions,$row);后:
12小李我的第一条留言2009-10-2610:
04:
53218.82.32.12
13小李我的第二条留言2009-10-2610:
04:
53218.82.32.12
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
delete——按条件删除记录
用法:
delete($conditions)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
delete的操作将删除符合$conditions条件的记录。
例子:
1
//这里我们将删除小李的第二条留言,也就是gid=13的记录
2
//构造查找条件
3
$conditions=array('gid'=>13);//构造条件
4
$gb=spClass('gb');
5
$gb->delete($conditions);
原来的数据表:
12小李我的留言2009-10-2610:
04:
53218.82.32.12
13小李我的第二条留言2009-10-2610:
04:
53218.82.32.12
经过执行$gb->delete($conditions);后:
12小李我的第一条留言2009-10-2610:
04:
53218.82.32.12
gid为13的记录已被删除
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
$sort,排序方法,等于SQL语句中的ORDERBY(排序)
首先我们来看看,通常SQL语句中的排序是如何实现的,比如说留言本中需要按照时间先后排序(正序,就是ASC,反序DESC)
SELECT*FROMspgb_gbORDERBYpost_timeASC//正序,也就是时间小的排前面
SELECT*FROMspgb_gbORDERBYpost_timeDESC//反序,时间大的排前面
SELECT*FROMspgb_gbWHEREname='jake'ORDERBYpost_timeASC,replayDESC//查询留言者是jake的留言,按时间正序然后回复反序的方式排列(一般按回复内容的头字母排列)
而当我们使用find/findAll的时候,可以:
$results=$gb->findAll(null,"post_timeASC");//条件为空,排序是时间正序
$results=$gb->findAll(null,"post_timeDESC");//条件为空,排序是时间反序
$results=$gb->findAll(array('name'=>'jake'),"post_timeASC,replayDESC");//条件为name=jake,排序是时间正序然后回复反序的方式排列
$fields,仅获取的字段,等于SQL语句SELECT和FROM之间的返回字段,默认为*(也就是返回所有字段)
SELECTgid,name,contentsFROMspgb_gb
SELECTspgb_gb.gid,spgb_gd.name,spgb_gb.contentsFROMspgb_gb
以上两条SQL语句的相等的,而第二条SQL语句在返回的字段名称前,加上的表全名,这样做更为严谨。
而使用find/findAll,可以:
$results=$gb->findAll(null,null,"gid,name,contents");//条件为空,排序为默认的主键ID排序,返回字段限制是gid,name,contents
$results=$gb->findAll(null,null,"spgb_gb.gid,spgb_gd.name,spgb_gb.contents");//和上面相同
在使用$fields的时候,请注意:
$fields一定要包括排序$sort的字段,比如按时间排序,那么$fields是务必要包含时间字段。
当$sort为空(默认)的时候,那么$field需要包含主键(因为默认$sort是按主键排序的)
findCount——计算符合条件的记录数量
用法:
findCount($conditions=null)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
该函数主要用于计算符合$conditions的记录数量。
可以说findCount是相等于SQL语句的“SELECTCOUNT(*)WHERE条件”的返回结果
例子:
1
//我们来看看数据表中有多少条留言者是“小李”的留言
2
$conditions=array('name'=>'小李');//条件是同样的
3
$gb=spClass('gb');//初始化留言本模型类
4
$sum=$gb->findCount($conditions);//使用了findCount
5
echo$sum;
数据表中有留言者是小李的数据:
12小李我的留言2009-10-2610:
04:
53218.82.32.12
13小李我的第二条留言2009-10-2610:
04:
53218.82.32.12
findCount将得到结果:
2,也就是有两条留言者是“小李”的留言。
返回:
返回符合$conditions记录的数量,如无任何符合条件的记录将返回0。
create
在数据表中新增一行数据
用法:
create($row)
参数:
$row,数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。
例子:
01
/**首先是准备新增的数据
02
*表中的gid因为是自增量,所以没必要去赋值
03
*replay因为是可为空,并且刚留言也不会有回复,所以也可以不赋值
04
*数组中的键是字段名称,值是数据
05
*/
06
$newrow=array(//PHP的数组
07
'name'=>'jake',
08
'contents'=>'这是我的第一个留言',
09
'post_time'=>date('Y-m-dH:
i:
s'),
10
'post_ip'=>$_SERVER['REMOTE_ADDRESS'],
11
);
12
$gb=spClass('gb');//初始化留言本模型类
13
$gb->create($newrow);//进行新增操作
返回:
新增成功则返回新增的自增量ID,失败则返回FALSE。
delete
按条件删除记录
用法:
delete($conditions)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
delete的操作将删除符合$conditions条件的记录。
例子:
1
//这里我们将删除小李的第二条留言,也就是gid=13的记录
2
//构造查找条件
3
$conditions=array('gid'=>13);//构造条件
4
$gb=spClass('gb');
5
$gb->delete($conditions);
update
修改数据,该函数将根据参数中设置的条件而更新表中数据
boolupdate(mixedconditions,arrayrow)
参数:
mixedconditions数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
arrayrow数组形式,修改的数据,此参数的格式用法与create的$row是相同的。
在符合条件的记录中,将对$row设置的字段的数据进行修改。
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
updateField
按字段值修改一条记录
boolupdateField(mixedconditions,stringfield,stringvalue)
参数:
mixedconditions数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
stringfield字符串,对应数据表中的需要修改的字段名
stringvalue字符串,新值
返回:
返回值参考update函数。
例子:
1
//使用updateField
2
$conditions=array('gid'=>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- speedphp 学习 笔记