original_string: protected function execute($instance, $action)
      {
          $app = $this;
          $wei = $this->wei;
          $middleware = $this->getMiddleware($instance, $action);
  
          $callback = function () use ($instance, $action, $app) {
              $instance->before($app->request, $app->response);
  
              $method = $app->getActionMethod($action);
              $response = $instance->$method($app->request, $app->response);
  
              $instance->after($app->request, $response);
  
              return $response;
          };
  
          $next = function () use (&$middleware, &$next, $callback, $wei) {
              $config = array_splice($middleware, 0, 1);
              if ($config) {
                  $class = key($config);
                  $service = new $class(array('wei' => $wei) + $config[$class]);
                  $result = $service($next);
              } else {
                  $result = $callback();
              }
  
              return $result;
          };
  
          return $this->handleResponse($next())->send();
      }
code: protected function execute($instance, $action)
      {
          $app = $this;
          $wei = $this->wei;
          $middleware = $this->getMiddleware($instance, $action);
  
          $callback = function () use ($instance, $action, $app) {
              $instance->before($app->request, $app->response);
  
              $method = $app->getActionMethod($action);
              $response = $instance->$method($app->request, $app->response);
  
              $instance->after($app->request, $response);
  
              return $response;
          };
  
          $next = function () use (&$middleware, &$next, $callback, $wei) {
              $config = array_splice($middleware, 0, 1);
              if ($config) {
                  $class = key($config);
                  $service = new $class(array('wei' => $wei) + $config[$class]);
                  $result = $service($next);
              } else {
                  $result = $callback();
              }
  
              return $result;
          };
  
          return $this->handleResponse($next())->send();
      }
code_tokens: protected function execute ( $ instance , $ action ) { $ app = $ this ; $ wei = $ this -> wei ; $ middleware = $ this -> getMiddleware ( $ instance , $ action ) ; $ callback = function ( ) use ( $ instance , $ action , $ app ) { $ instance -> before ( $ app -> request , $ app -> response ) ; $ method = $ app -> getActionMethod ( $ action ) ; $ response = $ instance -> $ method ( $ app -> request , $ app -> response ) ; $ instance -> after ( $ app -> request , $ response ) ; return $ response ; } ; $ next = function ( ) use ( & $ middleware , & $ next , $ callback , $ wei ) { $ config = array_splice ( $ middleware , 0 , 1 ) ; if ( $ config ) { $ class = key ( $ config ) ; $ service = new $ class ( array ( 'wei' => $ wei ) + $ config [ $ class ] ) ; $ result = $ service ( $ next ) ; } else { $ result = $ callback ( ) ; } return $ result ; } ; return $ this -> handleResponse ( $ next ( ) ) -> send ( ) ; }
docstring: Execute action with middleware
  
  @param \Wei\BaseController $instance
  @param string $action
  @return Response
docstring_tokens: Execute action with middleware