فهرست منبع

Add base Strategy class

shalvah 5 سال پیش
والد
کامیت
c0ecc1b7f7

+ 3 - 19
src/Strategies/BodyParameters/GetFromDocBlocks.php

@@ -7,34 +7,18 @@ use ReflectionMethod;
 use Illuminate\Routing\Route;
 use Mpociot\Reflection\DocBlock;
 use Mpociot\Reflection\DocBlock\Tag;
+use Mpociot\ApiDoc\Strategies\Strategy;
 use Mpociot\ApiDoc\Tools\RouteDocBlocker;
-use Mpociot\ApiDoc\Tools\DocumentationConfig;
 use Mpociot\ApiDoc\Tools\Traits\ParamHelpers;
 use Dingo\Api\Http\FormRequest as DingoFormRequest;
 use Illuminate\Foundation\Http\FormRequest as LaravelFormRequest;
 
-class GetFromDocBlocks
+class GetFromDocBlocks extends Strategy
 {
 
     use ParamHelpers;
 
-    public $config;
-
-    public function __construct(DocumentationConfig $config)
-    {
-        $this->config = $config;
-    }
-
-    /**
-     * @param Route $route
-     * @param ReflectionClass $controller
-     * @param ReflectionMethod $method
-     * @param array $routeConfig Array of rules for the ruleset which this route belongs to.
-     *
-     * @return array
-     * @throws \Exception
-     */
-    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeConfig)
+    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeRules, array $context = [])
     {
         foreach ($method->getParameters() as $param) {
             $paramType = $param->getType();

+ 3 - 20
src/Strategies/Metadata/GetFromDocBlocks.php

@@ -7,29 +7,12 @@ use ReflectionMethod;
 use Illuminate\Routing\Route;
 use Mpociot\Reflection\DocBlock;
 use Mpociot\Reflection\DocBlock\Tag;
-use Mpociot\ApiDoc\Tools\DocumentationConfig;
+use Mpociot\ApiDoc\Strategies\Strategy;
 use Mpociot\ApiDoc\Tools\RouteDocBlocker;
 
-class GetFromDocBlocks
+class GetFromDocBlocks extends Strategy
 {
-
-    public $config;
-
-    public function __construct(DocumentationConfig $config)
-    {
-        $this->config = $config;
-    }
-
-    /**
-     * @param Route $route
-     * @param ReflectionClass $controller
-     * @param ReflectionMethod $method
-     * @param array $routeConfig Array of rules for the ruleset which this route belongs to.
-     *
-     * @return array
-     * @throws \Exception
-     */
-    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeConfig)
+    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeRules, array $context = [])
     {
         $docBlocks = RouteDocBlocker::getDocBlocksFromRoute($route);
         /** @var DocBlock $methodDocBlock */

+ 3 - 19
src/Strategies/QueryParameters/GetFromDocBlocks.php

@@ -7,34 +7,18 @@ use ReflectionMethod;
 use Illuminate\Routing\Route;
 use Mpociot\Reflection\DocBlock;
 use Mpociot\Reflection\DocBlock\Tag;
+use Mpociot\ApiDoc\Strategies\Strategy;
 use Mpociot\ApiDoc\Tools\RouteDocBlocker;
-use Mpociot\ApiDoc\Tools\DocumentationConfig;
 use Mpociot\ApiDoc\Tools\Traits\ParamHelpers;
 use Dingo\Api\Http\FormRequest as DingoFormRequest;
 use Illuminate\Foundation\Http\FormRequest as LaravelFormRequest;
 
-class GetFromDocBlocks
+class GetFromDocBlocks extends Strategy
 {
 
     use ParamHelpers;
 
-    public $config;
-
-    public function __construct(DocumentationConfig $config)
-    {
-        $this->config = $config;
-    }
-
-    /**
-     * @param Route $route
-     * @param ReflectionClass $controller
-     * @param ReflectionMethod $method
-     * @param array $routeConfig Array of rules for the ruleset which this route belongs to.
-     *
-     * @return array
-     * @throws \Exception
-     */
-    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeConfig)
+    public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeRules, array $context = [])
     {
         foreach ($method->getParameters() as $param) {
             $paramType = $param->getType();

+ 30 - 0
src/Strategies/Strategy.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace Mpociot\ApiDoc\Strategies;
+
+use ReflectionClass;
+use ReflectionMethod;
+use Illuminate\Routing\Route;
+use Mpociot\ApiDoc\Tools\DocumentationConfig;
+
+abstract class Strategy
+{
+    protected $config;
+
+    public function __construct(DocumentationConfig $config)
+    {
+        $this->config = $config;
+    }
+
+    /**
+     * @param Route $route
+     * @param ReflectionClass $controller
+     * @param ReflectionMethod $method
+     * @param array $routeRules Array of rules for the ruleset which this route belongs to.
+     * @param array $context Results from the previous stages
+     *
+     * @return array
+     * @throws \Exception
+     */
+    abstract public function __invoke(Route $route, ReflectionClass $controller, ReflectionMethod $method, array $routeRules, array $context = []);
+}