1414use Swoft \Http \Server \AttributeEnum ;
1515use Swoft \Http \Server \Exception \MethodNotAllowedException ;
1616use Swoft \Http \Server \Exception \RouteNotFoundException ;
17+ use Swoft \Http \Server \Payload ;
1718
1819/**
1920 * http handler adapter
2021 *
2122 * @Bean("httpHandlerAdapter")
22- * @uses HandlerAdapterMiddleware
23- * @version 2017年11月23日
2423 * @author stelin <phpcrazy@126.com>
25- * @copyright Copyright 2010-2016 swoft software
26- * @license PHP Version 7.x {@link http://www.php.net/license/3_0.txt}
2724 */
2825class HandlerAdapter implements HandlerAdapterInterface
2926{
@@ -58,7 +55,7 @@ public function doHandler(ServerRequestInterface $request, array $routeInfo)
5855 "Method '%s' not allowed for access %s, Allow: %s " ,
5956 $ request ->getMethod (),
6057 $ path ,
61- implode (', ' , $ routeInfo [2 ])
58+ \ implode (', ' , $ routeInfo [2 ])
6259 ));
6360 }
6461
@@ -75,9 +72,17 @@ public function doHandler(ServerRequestInterface $request, array $routeInfo)
7572
7673 // response
7774 if (!$ response instanceof Response) {
78- /* @var Response $contextResponse*/
79- $ contextResponse = RequestContext::getResponse ();
80- $ response = $ contextResponse ->withAttribute (AttributeEnum::RESPONSE_ATTRIBUTE , $ response );
75+ /* @var Response $newResponse*/
76+ $ newResponse = RequestContext::getResponse ();
77+
78+ // if is Payload
79+ if ($ response instanceof Payload) {
80+ $ response = $ newResponse
81+ ->withStatus ($ response ->getStatus ())
82+ ->withAttribute (AttributeEnum::RESPONSE_ATTRIBUTE , $ response ->data );
83+ } else {
84+ $ response = $ newResponse ->withAttribute (AttributeEnum::RESPONSE_ATTRIBUTE , $ response );
85+ }
8186 }
8287
8388 return $ response ;
0 commit comments