Esempio n. 1
0
 /**
  * @param ProcessData $ProcessData
  * @return array
  */
 private function process(ProcessData $ProcessData)
 {
     $cmd = $ProcessData->get_command();
     $cmdID = $ProcessData->get_commandid();
     $params = $ProcessData->get_params();
     //        $verify = $ProcessData->get_verify();
     $cmdClassName = $ProcessData->get_command_classname();
     $cmdMethodName = $ProcessData->get_command_methodname();
     $functionReturn = CommonUtilReturnVar::RetFail(0, 'no callable');
     $classFullName = route()->getService($cmdClassName);
     //查找注册类
     if (empty($classFullName)) {
         goto end;
     }
     $classIns = new $classFullName();
     //是否是接口类
     if (!$classIns instanceof Base) {
         $functionReturn = CommonUtilReturnVar::RetFail(1, 'service type error!');
         goto end;
     }
     foreach ($this->processFilters as $filter) {
         if ($filter instanceof ProcessFilter) {
             if (!$filter->filter($classIns, $ProcessData)) {
                 $functionReturn = CommonUtilReturnVar::RetFail(2, 'not pass filter!');
                 goto end;
             }
         }
     }
     if (!$classIns->is_services_enable($cmdMethodName)) {
         $functionReturn = CommonUtilReturnVar::RetFail(3, 'service cannot call!');
         goto end;
     }
     try {
         $functionReturn = $classIns->call_service($cmdMethodName, $params);
     } catch (MissingArgumentException $e) {
         //            $functionReturn = CommonUtilReturnVar::RetFail(err_service_gateway_call::ARGUMENT_ERROR, "MissingArgumentException\n" . $e->getMessage());
     }
     end:
     $returnArr = $functionReturn->to_Array();
     $returnArr[CommonUtilMessage::DBKey_cmd] = $cmd;
     $returnArr[CommonUtilMessage::DBKey_cmdid] = $cmdID;
     return $returnArr;
 }