Переглянути джерело

Merge pull request #79 from georgimorozov/feature/add-context-for-route-being-processed

Feature/add context for route being processed
Shalvah 4 роки тому
батько
коміт
a3fd36786a
1 змінених файлів з 17 додано та 0 видалено
  1. 17 0
      src/Extracting/Generator.php

+ 17 - 0
src/Extracting/Generator.php

@@ -20,12 +20,25 @@ class Generator
      */
     private $config;
 
+    /**
+     * @var Route|null
+     */
+    private static $routeBeingProcessed = null;
+
     public function __construct(DocumentationConfig $config = null)
     {
         // If no config is injected, pull from global
         $this->config = $config ?: new DocumentationConfig(config('scribe'));
     }
 
+    /**
+     * External interface that allows users to know what route is currently being processed
+     */
+    public static function getRouteBeingProcessed(): ?Route
+    {
+        return self::$routeBeingProcessed;
+    }
+
     /**
      * @param Route $route
      *
@@ -64,6 +77,8 @@ class Generator
      */
     public function processRoute(Route $route, array $routeRules = [])
     {
+        self::$routeBeingProcessed = $route;
+
         [$controllerName, $methodName] = u::getRouteClassAndMethodNames($route);
         $controller = new ReflectionClass($controllerName);
         $method = u::getReflectedRouteMethod([$controllerName, $methodName]);
@@ -113,6 +128,8 @@ class Generator
         $responseFields = $this->fetchResponseFields($controller, $method, $route, $routeRules, $parsedRoute);
         $parsedRoute['responseFields'] = $responseFields;
 
+        self::$routeBeingProcessed = null;
+
         return $parsedRoute;
     }