postphp static 静态变量做缓存

  • 基于静态变量不会随着函数的介绍而销毁,我们可以利用这个特点实现缓存

eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

用户请求重置密码的接收器
/

function () {
//检查用户是否存在
if( !checkUserExists( $_GET['userid'] ) ) {
exit('抱歉,用户不存在,请确认用户帐号。');
}
resetPassword( $_GET['userid'] );
//最后向用户发送一封邮件
sendEmail( $_GET['userid'], '重置密码成功', '新的密码是xxxx' );
exit('新密码已经发送到你的邮箱。');
}


帮助用户重置密码
/

function resetPassword( $userid ) {
//检查用户是否存在
if( !checkUserExists( $userid ) ) {
return false;
}

//进行重置用户密码的操作
//略...
return true;
}


向用户发送一封邮件
/

function sendEmail( $userid, $title, $content ) {
//检查用户是否存在
if( !checkUserExists( $userid ) ) {
return false;
}

//发送邮件操作
//略...
return true;
}


获取某个用户的数据
/

function getUserInfo( $userid ) {
//假设我有一个query的函数,它用来查询数据库并返回数据
$user = query( "SELECT * FROM user WHERE uid=" . intval( $userid ) );
return is_array( $user ) ? $user : array() ;
}

###由于上面的内容多处调用到checkUserExists这个函数,所以我们这里使用静态变量做缓存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

* 检查用户是否存在
*/
function checkUserExists($userid)
{
//使用静态变量保存查询的数据
static $cache = array();

if(isset($cache[$userid])){
return $cache[$userid];
}

$user = getUserInfo();
$cache[$userid] = !empty($user);
return $cache[$userid];
}