/** * 挂载玩家数据实体 * @var UserInfoMo */ public $userInfo; /** * @var bool userInfo是否需要回写 */ public $userInfoChanged = false; // /** * @param Req $req * @return Req */ public function __construct($req) { if (is_string($req)) { // fix黑窗调试直接调用 $req = JsonUtil::decode($req); } parent::__construct($req); switch ($this->cmd) { case CmdCode::cmd_user_loginuserinfo : # 登录 case CmdCode::cmd_user_gameconstinfo : # 下载常量 case CmdCode::cmd_user_testUserLogin : # 测试登录 case CmdCode::cmd_user_registerNewUID : # 测试注册账号 case CmdCode::cmd_user_registerNewRole : # 测试注册角色 case CmdCode::cmd_user_getzonelist: # 下载分区列表 # 这些消息不需要初始化UserInfo break; default : # 其余消息,初始化UserInfo if ($this->uid) { $this->userInfo = UserProc::getUserInfo($this->zoneid, $this->uid); if (null == $this->userInfo) { Err(">>>>>>>>>>用户数据读取为空!!<<<<<<<<<<<[$this->uid]:PreProc"); } } break; } self::$_req = $this; // ---赋值--- } /** * 把Req对象序列化到字符串 * @return type */ public function __toString() { $clone = clone $this; unset($clone->userInfo); # 删除不必要的字段 unset($clone->userInfoChanged); # 删除不必要的字段 $str = JsonUtil::encode($clone); # json return $str; } public function storage() { $clone = clone $this; if (!$clone->userInfoChanged) { unset($clone->userInfo); # 删除不必要的字段 } return $clone; } // /** * 全局实例 * @return Req */ public static function Ins() { return self::$_req; } private static $_req; // }