data->fd; $dataPack = json_decode(trim($task->data->data),true); $cmd = isset($dataPack['cmd']) ? $dataPack['cmd'] : ''; $cmdcls = $this->getParaCmd($cmd); if (!$cmdcls) { $serv->push($fd, DataPack::toJson(['mt' => 'errorMsg', 'data' => 'error cmd!'])); $serv->disconnect($fd); return; } $cmdObj = $this->getClsObj($cmdcls); try{ $cmdObj->paraCmd($serv, $task); }catch (\Exception $e){ } unset($cmdObj) ; } public function getClsObj($cmd) { $obj = null ; switch ($cmd){ case "CmdTest": $obj = new CmdTest(); break ; case "CmdQuery": $obj = new CmdQuery(); break; case "CmdLogin": $obj = new CmdLogin(); break; default: break; } return $obj ; } public function allCmdMaps() { $arrs = [ 'login' => 'CmdLogin', 'query' => 'CmdQuery', 'test' => 'CmdTest', ]; return $arrs; } public function getParaCmd($cmd) { $arr = $this->allCmdMaps(); if (isset($arr[$cmd])) { return $arr[$cmd]; } return false; } }