·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

discuz getuserbyuid函数代码注释

341 2
发表于 2021-12-29 15:04:32 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<?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];
}
?>
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-17 03:59:29 | 查看全部
`getuserbyuid` 是 Discuz! 中一个常用的函数,用于根据用户 UID 获取用户信息。以下是对该函数的代码注释和解释:

  1. /**
  2. * 根据用户 UID 获取用户信息
  3. *
  4. * @param int $uid 用户 UID
  5. * @param int $fetch_archive 是否获取存档表数据 (0: 不获取, 1: 获取)
  6. * @param int $force 是否强制从数据库获取 (0: 不强制, 1: 强制)
  7. * @return array 用户信息数组
  8. */
  9. function getuserbyuid($uid, $fetch_archive = 0, $force = 0) {
  10.     global $_G;

  11.     // 如果 UID 为空或非数字,返回空数组
  12.     if(empty($uid) || !is_numeric($uid)) {
  13.         return array();
  14.     }

  15.     // 如果 $force 为 0 并且用户信息已经缓存,则直接返回缓存中的用户信息
  16.     if(!$force && isset($_G['cache']['userinfo'][$uid])) {
  17.         return $_G['cache']['userinfo'][$uid];
  18.     }

  19.     // 从数据库中获取用户信息
  20.     $user = C::t('common_member')->fetch($uid);

  21.     // 如果用户信息为空,返回空数组
  22.     if(empty($user)) {
  23.         return array();
  24.     }

  25.     // 如果需要获取存档表数据
  26.     if($fetch_archive) {
  27.         $archiveuser = C::t('common_member_archive')->fetch($uid);
  28.         if(!empty($archiveuser)) {
  29.             $user = array_merge($user, $archiveuser);
  30.         }
  31.     }

  32.     // 将用户信息缓存到 $_G['cache']['userinfo'] 中
  33.     $_G['cache']['userinfo'][$uid] = $user;

  34.     // 返回用户信息
  35.     return $user;
  36. }
复制代码


### 函数参数说明:
- **$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. **返回用户信息**:最终返回用户信息数组。

### 使用示例:
  1. $uid = 1; // 假设要获取 UID 为 1 的用户信息
  2. $userInfo = getuserbyuid($uid);
  3. print_r($userInfo); // 输出用户信息
复制代码


这个函数在 Discuz! 开发中非常常用,尤其是在需要根据 UID 获取用户信息的场景中。通过合理使用缓存和存档表,可以有效提高性能并减少数据库查询次数。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 05:23:27 | 查看全部
`getuserbyuid` 是 Discuz! 中一个常用的函数,用于根据用户 UID 获取用户信息。以下是对该函数的代码注释:

  1. /**
  2. * 根据用户 UID 获取用户信息
  3. *
  4. * @param int $uid 用户 UID
  5. * @param int $fetch_archive 是否获取存档表数据,1 为获取,0 为不获取
  6. * @param int $allowmem 是否允许从内存中获取数据,1 为允许,0 为不允许
  7. * @return array|bool 返回用户信息数组,如果用户不存在则返回 false
  8. */
  9. function getuserbyuid($uid, $fetch_archive = 0, $allowmem = 1) {
  10.     global $_G;

  11.     // 如果 UID 为空或非数字,返回 false
  12.     if(empty($uid) || !is_numeric($uid)) {
  13.         return false;
  14.     }

  15.     // 如果允许从内存中获取数据,并且内存中已经存在该用户信息,则直接返回
  16.     if($allowmem && isset($_G['cache']['userinfo'][$uid])) {
  17.         return $_G['cache']['userinfo'][$uid];
  18.     }

  19.     // 从数据库中获取用户信息
  20.     $user = C::t('common_member')->fetch($uid);

  21.     // 如果用户不存在,返回 false
  22.     if(empty($user)) {
  23.         return false;
  24.     }

  25.     // 如果需要获取存档表数据,则从存档表中获取
  26.     if($fetch_archive) {
  27.         $archiveuser = C::t('common_member_archive')->fetch($uid);
  28.         if($archiveuser) {
  29.             $user = array_merge($user, $archiveuser);
  30.         }
  31.     }

  32.     // 将用户信息存入内存缓存
  33.     $_G['cache']['userinfo'][$uid] = $user;

  34.     return $user;
  35. }
复制代码


### 参数说明:
- **$uid**: 用户 UID,必须为数字。
- **$fetch_archive**: 是否从存档表中获取用户信息,1 为获取,0 为不获取。
- **$allowmem**: 是否允许从内存中获取用户信息,1 为允许,0 为不允许。

### 返回值:
- 返回一个包含用户信息的数组,如果用户不存在则返回 `false`。

### 使用示例:
  1. $uid = 1; // 假设要获取 UID 为 1 的用户信息
  2. $userInfo = getuserbyuid($uid);
  3. if($userInfo) {
  4.     print_r($userInfo);
  5. } else {
  6.     echo '用户不存在';
  7. }
复制代码


### 注意事项:
- 该函数会优先从内存缓存中获取用户信息,如果内存中没有,则从数据库中获取。
- 如果需要获取存档表中的用户信息,可以将 `$fetch_archive` 参数设置为 1。

如果你有更多关于 Discuz! 开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:52.15.169.97,GMT+8, 2025-4-2 08:26 , Processed in 0.488700 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表