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