speedphp学习笔记.docx

上传人:b****3 文档编号:3808236 上传时间:2022-11-25 格式:DOCX 页数:20 大小:26.32KB
下载 相关 举报
speedphp学习笔记.docx_第1页
第1页 / 共20页
speedphp学习笔记.docx_第2页
第2页 / 共20页
speedphp学习笔记.docx_第3页
第3页 / 共20页
speedphp学习笔记.docx_第4页
第4页 / 共20页
speedphp学习笔记.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

speedphp学习笔记.docx

《speedphp学习笔记.docx》由会员分享,可在线阅读,更多相关《speedphp学习笔记.docx(20页珍藏版)》请在冰豆网上搜索。

speedphp学习笔记.docx

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'=>

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1