discuz getuserbyuid函数代码注释
<?php//getuserbyuid(11,1)
function getuserbyuid($uid, $fetch_archive=0) {
static $users = array();
if (empty($users[$uid])) {
$users[$uid] = C::t('common_member'.($fetch_archive === 2 ? '_archive' : ''))->fetch($uid);
//打印$users[$uid]
$users[$uid] = array (
'uid'=>'11',//会员id
'email'=>'lu@sohu.com',//邮箱
'username'=>'岁月如歌',//用户名
'password'=>'e53c40608b013b0ef16f7e077cdbf8aa',//密码
'status'=>'0',//判断用户是否已经删除,需要discuz程序加判断,并增加整体清理的功能。
'emailstatus'=>'0',//email是否经过验证
'avatarstatus'=>'0',//是否有头像
'videophotostatus'=>'0',//视频认证状态
'adminid'=>'0',//管理员id
'groupid'=>'10',//会员组id
'groupexpiry'=>'0',//用户组有效期
'extgroupids'=>'',//扩展用户组
'regdate'=>'1497574350',//注册时间
'credits'=>33,//总积分
'notifysound'=>'0',//短信声音
'timeoffset'=>'9999',//时区校正
'newpm'=>'0',//新短消息数量
'newprompt'=>0,//新提醒数目
'accessmasks'=>'0',//标志
'allowadmincp'=>'0',//标志
'onlyacceptfriendpm'=>'0',//是否只接收好友短消息
'conisbind'=>'0',//用户是否绑定QC
'freeze'=>'0',
);
if ($fetch_archive === 1 && empty($users[$uid])) {
$users[$uid] = C::t('common_member_archive')->fetch($uid);
}
}
if (!isset($users[$uid]['self']) && $uid == getglobal('uid') && getglobal('uid')) {
$users[$uid]['self'] = 1;
}
return $users[$uid];
}
?> `getuserbyuid` 是 Discuz! 中一个常用的函数,用于根据用户 UID 获取用户信息。以下是对该函数的代码注释和解释:
/**
* 根据用户 UID 获取用户信息
*
* @param int $uid 用户 UID
* @param int $fetch_archive 是否获取存档表数据 (0: 不获取, 1: 获取)
* @param int $force 是否强制从数据库获取 (0: 不强制, 1: 强制)
* @return array 用户信息数组
*/
function getuserbyuid($uid, $fetch_archive = 0, $force = 0) {
global $_G;
// 如果 UID 为空或非数字,返回空数组
if(empty($uid) || !is_numeric($uid)) {
return array();
}
// 如果 $force 为 0 并且用户信息已经缓存,则直接返回缓存中的用户信息
if(!$force && isset($_G['cache']['userinfo'][$uid])) {
return $_G['cache']['userinfo'][$uid];
}
// 从数据库中获取用户信息
$user = C::t('common_member')->fetch($uid);
// 如果用户信息为空,返回空数组
if(empty($user)) {
return array();
}
// 如果需要获取存档表数据
if($fetch_archive) {
$archiveuser = C::t('common_member_archive')->fetch($uid);
if(!empty($archiveuser)) {
$user = array_merge($user, $archiveuser);
}
}
// 将用户信息缓存到 $_G['cache']['userinfo'] 中
$_G['cache']['userinfo'][$uid] = $user;
// 返回用户信息
return $user;
}
### 函数参数说明:
- **$uid**: 用户的 UID,必须是一个有效的数字。
- **$fetch_archive**: 是否从存档表中获取用户信息。默认值为 0,表示不获取;设置为 1 时,会从 `common_member_archive` 表中获取额外的用户信息。
- **$force**: 是否强制从数据库中获取用户信息。默认值为 0,表示如果用户信息已经缓存,则直接返回缓存数据;设置为 1 时,会强制从数据库中重新获取用户信息。
### 函数返回值:
- 返回一个包含用户信息的数组。如果 UID 无效或用户不存在,则返回空数组。
### 函数流程:
1. **参数检查**:首先检查 UID 是否为空或非数字,如果是,则返回空数组。
2. **缓存检查**:如果 `$force` 为 0 并且用户信息已经缓存,则直接返回缓存中的用户信息。
3. **数据库查询**:从 `common_member` 表中获取用户信息。
4. **存档表查询**:如果 `$fetch_archive` 为 1,则从 `common_member_archive` 表中获取额外的用户信息,并合并到用户信息数组中。
5. **缓存用户信息**:将获取到的用户信息缓存到 `$_G['cache']['userinfo']` 中,以便后续使用。
6. **返回用户信息**:最终返回用户信息数组。
### 使用示例:
$uid = 1; // 假设要获取 UID 为 1 的用户信息
$userInfo = getuserbyuid($uid);
print_r($userInfo); // 输出用户信息
这个函数在 Discuz! 开发中非常常用,尤其是在需要根据 UID 获取用户信息的场景中。通过合理使用缓存和存档表,可以有效提高性能并减少数据库查询次数。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 `getuserbyuid` 是 Discuz! 中一个常用的函数,用于根据用户 UID 获取用户信息。以下是对该函数的代码注释:
/**
* 根据用户 UID 获取用户信息
*
* @param int $uid 用户 UID
* @param int $fetch_archive 是否获取存档表数据,1 为获取,0 为不获取
* @param int $allowmem 是否允许从内存中获取数据,1 为允许,0 为不允许
* @return array|bool 返回用户信息数组,如果用户不存在则返回 false
*/
function getuserbyuid($uid, $fetch_archive = 0, $allowmem = 1) {
global $_G;
// 如果 UID 为空或非数字,返回 false
if(empty($uid) || !is_numeric($uid)) {
return false;
}
// 如果允许从内存中获取数据,并且内存中已经存在该用户信息,则直接返回
if($allowmem && isset($_G['cache']['userinfo'][$uid])) {
return $_G['cache']['userinfo'][$uid];
}
// 从数据库中获取用户信息
$user = C::t('common_member')->fetch($uid);
// 如果用户不存在,返回 false
if(empty($user)) {
return false;
}
// 如果需要获取存档表数据,则从存档表中获取
if($fetch_archive) {
$archiveuser = C::t('common_member_archive')->fetch($uid);
if($archiveuser) {
$user = array_merge($user, $archiveuser);
}
}
// 将用户信息存入内存缓存
$_G['cache']['userinfo'][$uid] = $user;
return $user;
}
### 参数说明:
- **$uid**: 用户 UID,必须为数字。
- **$fetch_archive**: 是否从存档表中获取用户信息,1 为获取,0 为不获取。
- **$allowmem**: 是否允许从内存中获取用户信息,1 为允许,0 为不允许。
### 返回值:
- 返回一个包含用户信息的数组,如果用户不存在则返回 `false`。
### 使用示例:
$uid = 1; // 假设要获取 UID 为 1 的用户信息
$userInfo = getuserbyuid($uid);
if($userInfo) {
print_r($userInfo);
} else {
echo '用户不存在';
}
### 注意事项:
- 该函数会优先从内存缓存中获取用户信息,如果内存中没有,则从数据库中获取。
- 如果需要获取存档表中的用户信息,可以将 `$fetch_archive` 参数设置为 1。
如果你有更多关于 Discuz! 开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]