CmdProxy.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/5/21
  6. * Time: 16:03
  7. */
  8. namespace app\logic;
  9. ///composer update或者composer install或者composer dump-autoload.
  10. ///
  11. use app\lib\DataPack;
  12. use app\logic\cmdpro\CmdTest as CmdTest;
  13. use app\logic\cmdpro\CmdQuery as CmdQuery;
  14. use app\logic\cmdpro\CmdLogin as CmdLogin;
  15. use app\logic\cmdpro\CmdSubser as CmdSubser;
  16. class CmdProxy
  17. {
  18. private static $Instance = null;
  19. public static function getInstance($cache = true)
  20. {
  21. if ($cache && self::$Instance) {
  22. echo "直接返回 CmdProxy OBJ\n";
  23. return self::$Instance;
  24. }
  25. echo "新建 CmdProxy OBJ\n";
  26. self::$Instance = new self();
  27. return self::$Instance;
  28. }
  29. public function ParaCMD($serv, \Swoole\Server\Task $task)
  30. {
  31. $fd = $task->data->fd;
  32. $dataPack = json_decode(trim($task->data->data),true);
  33. $cmd = isset($dataPack['cmd']) ? $dataPack['cmd'] : '';
  34. $cmdcls = $this->getParaCmd($cmd);
  35. if (!$cmdcls) {
  36. $serv->push($fd, DataPack::toJson(['mt' => 'errorMsg', 'data' => 'error cmd!']));
  37. $serv->disconnect($fd);
  38. return;
  39. }
  40. $cmdObj = $this->getClsObj($cmdcls);
  41. try{
  42. $cmdObj->paraCmd($serv, $task);
  43. }catch (\Exception $e){
  44. }
  45. unset($cmdObj) ;
  46. }
  47. public function getClsObj($cmd)
  48. {
  49. $obj = null ;
  50. switch ($cmd){
  51. case "CmdTest":
  52. $obj = new CmdTest();
  53. break ;
  54. case "CmdQuery":
  55. $obj = new CmdQuery();
  56. break;
  57. case "CmdLogin":
  58. $obj = new CmdLogin();
  59. break;
  60. case "CmdSubser":
  61. $obj = new CmdSubser();
  62. break;
  63. default:
  64. break;
  65. }
  66. return $obj ;
  67. }
  68. public function allCmdMaps()
  69. {
  70. $arrs = [
  71. 'login' => 'CmdLogin',
  72. 'query' => 'CmdQuery',
  73. 'test' => 'CmdTest',
  74. 'subserv' => 'CmdSubser',
  75. ];
  76. return $arrs;
  77. }
  78. public function getParaCmd($cmd)
  79. {
  80. $arr = $this->allCmdMaps();
  81. if (isset($arr[$cmd])) {
  82. return $arr[$cmd];
  83. }
  84. return false;
  85. }
  86. }