今天一起来样例代码分析下Discuz X!里面的一段代码,一起来看看代码:
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); 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]; }这里要分析的是代码逻辑哈:
从第三行代码开始看起,如果用户的uid为空,那么就从数据库中读取,这里有点要注意,就是用户分表的情况下,如果传入的是从当前主分表里读取,那么就从分表主表里获取用户信息,根据uid来定位数据库记录。