Jelajahi Sumber

代码整理: 添加了my_default_obj方法,用于确保变量不为null

gwang 5 tahun lalu
induk
melakukan
15e923c6a5

+ 20 - 0
Gameserver/Amfphp/main.php

@@ -158,6 +158,26 @@ function my_Assert($condition, $err) {
     DebugHelper::assert($condition, $err);
 }
 
+/**
+ * 确保指定变量不为空(若为空则用stdclass初始化)
+ * @param \stdClass $obj
+ */
+function my_default_Obj(&$obj) {
+    if (null == $obj) {
+        $obj = new \stdClass();
+    }
+}
+
+/**
+ * 确保指定变量不为空(若为空则用array()初始化)
+ * @param \array $arr
+ */
+function my_default_Arr(&$arr) {
+    if (null == $arr) {
+        $arr = array();
+    }
+}
+
 /**
  * 功能已过期 
  */

+ 26 - 67
Gameserver/Amfphp/process/HeroProc.php

@@ -86,9 +86,7 @@ class HeroProc {
 
         $user = $req->userInfo->game;                                           # user引用 
         $cHeros = $user->heros->collectHeros;
-        if (!$cHeros) {
-            $cHeros = ObjectInit();
-        }
+        my_default_Obj($cHeros);
         my_Assert(CommUtil::isPropertyExists($cHeros, $huid), ErrCode::hero_no); # 1.检查是否存在要解锁的英雄
 #                                                                               # 2.判断英雄的该技能能否升级.... 
         $targetHero = new UserHeroModel($cHeros->$huid);                        # 直接类型识别
@@ -114,32 +112,17 @@ class HeroProc {
      * @param req $req
      */
     static function OnekeyUpgradeSkillLevel($req) {
-        $user = $req->userInfo->game;                                           # user引用
-        $huid = $req->paras[0];                                                 # 英雄的UID
-        $mainSkillId = $req->paras[1];                                          # 主技能Id
-        $subSkillId = $req->paras[2];                                           # 要升级的子技能ID
-        $targetSubSkillId = $req->paras[3];                                     # 升级到的子技能Id
-        $costGold = $req->paras[4];                                             # 要升级的消耗金币
-#                                                                               # 1.检查是否存在要升级的英雄
+        list($huid, $mainSkillId, $subSkillId, $targetSubSkillId, $costGold) = $req->paras; # 提取参数: 英雄的UID, 主技能ID, 要升级的子技能ID, 升级到的子技能ID, 升级要消耗的金币
+
+        $user = $req->userInfo->game;                                           # user引用#                                                                            
         $collectHeros = $user->heros->collectHeros;
-        if (!$collectHeros) {
-            $collectHeros = ObjectInit();
-        }
-        if (!CommUtil::isPropertyExists($collectHeros, $huid)) {
-            return Resp::err(ErrCode::hero_no);
-        }
+        my_default_Obj($collectHeros);                                          # 防御变量为空
+        my_Assert(CommUtil::isPropertyExists($collectHeros, $huid), ErrCode::hero_no);   # 1.检查是否存在要升级的英雄
 #                                                                               # 2.判断英雄的该技能能否升级....
-//        isEditor() and $targetHero = new UserHeroModel();
         $targetHero = new UserHeroModel($collectHeros->$huid);
-#                                                                               # 取出这个英雄的技能数据 
-        $targteHeroSkills = $targetHero->subSkills;
-        if (!CommUtil::isPropertyExists($targteHeroSkills, $mainSkillId)) {     # 主技能Id.
-            return Resp::err(ErrCode::err_unknownn, "玩家数据结构问题");
-        }
-        if (!CommUtil::isInArray($targteHeroSkills->$mainSkillId, $subSkillId)) {
-            return Resp::err(ErrCode::err_unknownn, "子技能id错误");
-        }
-
+        $targteHeroSkills = $targetHero->subSkills;                            # 取出这个英雄的技能数据 
+        my_Assert(CommUtil::isPropertyExists($targteHeroSkills, $mainSkillId), "玩家数据结构有问题.");     # 主技能Id.
+        my_Assert(CommUtil::isInArray($targteHeroSkills->$mainSkillId, $subSkillId), "子技能id错误");     # 子技能id
 //        if (!$targetHero->IsSkillUpdateAble($mainSkillId, $subSkillId)) {       # 3.判断技能等级能否在继续升级了
 //            return Resp::err(ErrCode::hero_upgradeSkill_maxLevel);
 //        }
@@ -147,13 +130,11 @@ class HeroProc {
 //        if (null == $sm) {
 //            return \Resp::err(ErrCode::err_const_no, '找不到子技能配置数据');
 //        }
-        if (!UserGameModel::Consume_Gold($user, $costGold)) {                   # 5. 扣除金币消耗
-            return Resp::err(ErrCode::notenough_gold_msg);
-        }
+        my_Assert(UserGameModel::Consume_Gold($user, $costGold), ErrCode::notenough_gold_msg); # 5. 扣除金币消耗
         unset($targteHeroSkills->$mainSkillId, $subSkillId);                    # 替换技能
         array_push($targteHeroSkills->$mainSkillId, $targetSubSkillId);
         $targetHero->subSkills = $targteHeroSkills;
-        UserProc::updateUserInfo();                                         # 回写数据
+        UserProc::updateUserInfo();                                             # 回写数据
         return Resp::ok($targetHero);
     }
 
@@ -162,44 +143,26 @@ class HeroProc {
      * @param req $req
      */
     static function UpgradeSkillLevel($req) {
+        list($huid, $mainSkillId, $subSkillId) = $req->paras;                   # 提取参数: 英雄的UID, 主技能Id, 要升级的子技能Id 
         $user = $req->userInfo->game;                                           # user引用
-        $huid = $req->paras[0];                                                 # 英雄的UID
-        $mainSkillId = $req->paras[1];                                          # 主技能Id
-        $subSkillId = $req->paras[2];                                           # 要升级的子技能ID
-//        $costGold = $req->paras[3];                                             # 要升级的消耗金币
-#                                                                               # 1.检查是否存在要升级的英雄
+
         $collectHeros = $user->heros->collectHeros;
-        if (!$collectHeros) {
-            $collectHeros = ObjectInit();
-        }
-        if (!CommUtil::isPropertyExists($collectHeros, $huid)) {
-            return Resp::err(ErrCode::hero_no);
-        }
-#                                                                               # 2.判断英雄的该技能能否升级....
+        my_default_Obj($collectHeros);                                          # 防御变量为空
+        my_Assert(CommUtil::isPropertyExists($collectHeros, $huid), ErrCode::hero_no);   # 1.检查是否存在要升级的英雄
         $targetHero = new UserHeroModel($collectHeros->$huid);
-#                                                                               # 取出这个英雄的技能数据 
-        $targteHeroSkills = $targetHero->subSkills;
-        if (!CommUtil::isPropertyExists($targteHeroSkills, $mainSkillId)) {     # 主技能Id.
-            return Resp::err(ErrCode::err_unknownn, "玩家数据结构问题");
-        }
-        if (!CommUtil::isInArray($targteHeroSkills->$mainSkillId, $subSkillId)) {
-            return Resp::err(ErrCode::err_unknownn, "子技能id错误");
-        }
-        if (!$targetHero->IsSkillUpdateAble($mainSkillId, $subSkillId)) {       # 3.判断技能等级能否在继续升级了
-            return Resp::err(ErrCode::hero_upgradeSkill_maxLevel);
-        }
+        $targteHeroSkills = $targetHero->subSkills;                             # 取出这个英雄的技能数据 
+        my_Assert(CommUtil::isPropertyExists($targteHeroSkills, $mainSkillId), "玩家数据结构有问题.");     # 主技能Id.
+        my_Assert(CommUtil::isInArray($targteHeroSkills->$mainSkillId, $subSkillId), "子技能id错误");     # 子技能id
+        my_Assert($targetHero->IsSkillUpdateAble($mainSkillId, $subSkillId), ErrCode::hero_upgradeSkill_maxLevel);       # 3.判断技能等级能否在继续升级了
 
         $sm = GameConfig::subSkill_getItem($subSkillId);                        # 4.取出该技能升级消耗的常量数据
-        if (null == $sm) {
-            return Resp::err(ErrCode::err_const_no, '找不到子技能配置数据');
-        }
-        if (!UserGameModel::Consume_Gold($user, $sm->upgradeCost)) {            # 5. 扣除金币消耗
-            return Resp::err(ErrCode::notenough_gold_msg);
-        }
+        my_Assert(null != $sm, ErrCode::err_const_no);                          # 找不到子技能配置数据
+        my_Assert(UserGameModel::Consume_Gold($user, $sm->upgradeCost), ErrCode::notenough_gold_msg);  # 5. 扣除金币消耗
+
         unset($targteHeroSkills->$mainSkillId, $subSkillId);                    # 替换技能
         array_push($targteHeroSkills->$mainSkillId, $sm->nextLevel_Id);
         $targetHero->subSkills = $targteHeroSkills;
-        UserProc::updateUserInfo();                                         # 回写数据
+        UserProc::updateUserInfo();                                             # 回写数据
         return Resp::ok($targetHero);
     }
 
@@ -1346,9 +1309,7 @@ class HeroProc {
     static function GetHero($req) {
         $heroModelId = $req->paras[0];                                          // 英雄的模板ID 
         $heroCfg = GameConfig::hero_getItem($heroModelId);                      //1.检查是否存在这个英雄的模板
-        if (!$heroCfg) {
-            return Resp::err(ErrCode::hero_const_no_err);
-        }
+        my_Assert(null != $heroCfg, ErrCode::hero_const_no_err);
         $hero = self::AddHeroTFromStore($req, $heroModelId);
         UserProc::updateUserInfo();
         $result = array('result' => "succeed", 'heros' => $hero);               #  4. 设置返回值
@@ -1566,13 +1527,11 @@ class HeroProc {
         $heroUID = $req->paras[0];                                              # 玩家英雄实例编号
         $lockstate = $req->paras[1];                                            # 玩家英雄锁定状态
         $collectHeros = $gamedata->heros->collectHeros;
-        if (!$collectHeros) {
-            $collectHeros = ObjectInit();
-        }
+        my_default_Obj($collectHeros);                                          # 默认值
         if (!CommUtil::isPropertyExists($collectHeros, $heroUID)) {
             Err(ErrCode::hero_no);
         }
-        isEditor() and $hero = new UserHeroModel;
+//        isEditor() and $hero = new UserHeroModel;
         $hero = $collectHeros->$heroUID;                                        # 1. 获取这个英雄的实例数据是
         $hero->isLocked = $lockstate;                                           # 2. 修改英雄状态
         UserProc::updateUserInfo();                                         # 3. 保存玩家数据

+ 5 - 6
Gameserver/Amfphp/test.php

@@ -9,9 +9,8 @@ include __DIR__ . '/main.php';
 echoLine("phpver:" . PHP_VERSION);
 
 
-$sql = "select * from `tab_rolename` where userID = 'gwang1'";
-$rwo = daoInst()->query($sql)->fetchAll();
-var_dump($rwo);
-$paydb = CPayInit();
-$rows = $paydb->fetch_array($sql);
-var_dump($rows);
+$a = null;
+
+var_dump($a);
+my_default_Obj($a);
+var_dump($a);

+ 4 - 1
Gameserver/nbproject/private/private.xml

@@ -11,6 +11,9 @@
         </file>
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group/>
+        <group>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/HeroProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/CmdCode.php</file>
+        </group>
     </open-files>
 </project-private>