コード例 #1
0
 /**
  * @param RequestInterface $request
  * @param string           $endpoint
  *
  * @return RpcResponseInterface
  * @throws \Exception
  */
 protected function getResponse(RequestInterface $request, $endpoint)
 {
     $request->getAttributes()->set('_endpoint', $endpoint);
     try {
         $rpcResponse = $this->handleSingleRequest($request);
     } catch (\Exception $e) {
         $rpcResponse = $this->handleException($e, $request);
     }
     return $rpcResponse;
 }
コード例 #2
0
 /**
  * Checks that argument matches parameter type
  *
  * @param mixed                $argument
  * @param \ReflectionParameter $param
  * @param RequestInterface     $request
  *
  * @return mixed
  */
 private function checkType($argument, \ReflectionParameter $param, RequestInterface $request)
 {
     $actual = is_object($argument) ? get_class($argument) : gettype($argument);
     if (null !== $param->getClass()) {
         $className = $param->getClass();
         if (!$argument instanceof $className) {
             throw InvalidMethodParametersException::typeMismatch($request->getMethod(), $param->name, $className, $actual);
         }
     } elseif ($param->isArray() && !is_array($argument)) {
         throw InvalidMethodParametersException::typeMismatch($request->getMethod(), $param->name, 'array', $actual);
     }
     return $argument;
 }