Browse Source

Remove deprecated DoublePassMiddleware.

ADmad 4 years ago
parent
commit
e3fc547b11

+ 0 - 6
psalm-baseline.xml

@@ -92,12 +92,6 @@
       <code>$this-&gt;headers</code>
     </PropertyTypeCoercion>
   </file>
-  <file src="src/Http/MiddlewareQueue.php">
-    <DeprecatedClass occurrences="2">
-      <code>new DoublePassDecoratorMiddleware($middleware)</code>
-      <code>new DoublePassDecoratorMiddleware($middleware)</code>
-    </DeprecatedClass>
-  </file>
   <file src="src/Http/ServerRequest.php">
     <ArgumentTypeCoercion occurrences="1">
       <code>$this-&gt;data</code>

+ 0 - 94
src/Http/Middleware/DoublePassDecoratorMiddleware.php

@@ -1,94 +0,0 @@
-<?php
-declare(strict_types=1);
-
-/**
- * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
- * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- * @link          https://cakephp.org CakePHP(tm) Project
- * @since         4.0.0
- * @license       https://opensource.org/licenses/mit-license.php MIT License
- */
-namespace Cake\Http\Middleware;
-
-use Cake\Http\Response;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Server\MiddlewareInterface;
-use Psr\Http\Server\RequestHandlerInterface;
-
-/**
- * Decorate double-pass middleware as PSR-15 middleware.
- *
- * The callable can be a closure with the following signature:
- *
- * ```
- * function (
- *     ServerRequestInterface $request,
- *     ResponseInterface $response,
- *     callable $next
- * ): ResponseInterface
- * ```
- *
- * or a class with `__invoke()` method with same signature as above.
- *
- * Neither the arguments nor the return value need be typehinted.
- *
- * @deprecated 4.3.0 "Double pass" middleware are deprecated.
- *   Use a `Closure` or a class which implements `Psr\Http\Server\MiddlewareInterface` instead.
- */
-class DoublePassDecoratorMiddleware implements MiddlewareInterface
-{
-    /**
-     * A closure or invokable object.
-     *
-     * @var callable
-     */
-    protected $callable;
-
-    /**
-     * Constructor
-     *
-     * @param callable $callable A closure.
-     */
-    public function __construct(callable $callable)
-    {
-        deprecationWarning(
-            '"Double pass" middleware are deprecated. Use a `Closure` with the signature of'
-            . ' `($request, $handler)` or a class which implements `Psr\Http\Server\MiddlewareInterface` instead.'
-        );
-        $this->callable = $callable;
-    }
-
-    /**
-     * Run the internal double pass callable to process an incoming server request.
-     *
-     * @param \Psr\Http\Message\ServerRequestInterface $request Request instance.
-     * @param \Psr\Http\Server\RequestHandlerInterface $handler Request handler instance.
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
-    {
-        return ($this->callable)(
-            $request,
-            new Response(),
-            function ($request, $res) use ($handler) {
-                return $handler->handle($request);
-            }
-        );
-    }
-
-    /**
-     * @internal
-     * @return callable
-     */
-    public function getCallable(): callable
-    {
-        return $this->callable;
-    }
-}

+ 4 - 13
src/Http/MiddlewareQueue.php

@@ -18,13 +18,11 @@ namespace Cake\Http;
 
 use Cake\Core\App;
 use Cake\Http\Middleware\ClosureDecoratorMiddleware;
-use Cake\Http\Middleware\DoublePassDecoratorMiddleware;
 use Closure;
 use Countable;
 use LogicException;
 use OutOfBoundsException;
 use Psr\Http\Server\MiddlewareInterface;
-use ReflectionFunction;
 use RuntimeException;
 use SeekableIterator;
 
@@ -68,9 +66,10 @@ class MiddlewareQueue implements Countable, SeekableIterator
      * @return \Psr\Http\Server\MiddlewareInterface
      * @throws \RuntimeException If Middleware not found.
      */
-    protected function resolve($middleware): MiddlewareInterface
+    protected function resolve(MiddlewareInterface|Closure|string $middleware): MiddlewareInterface
     {
         if (is_string($middleware)) {
+            /** @psalm-var class-string<\Psr\Http\Server\MiddlewareInterface>|null $className */
             $className = App::className($middleware, 'Middleware', 'Middleware');
             if ($className === null) {
                 throw new RuntimeException(sprintf(
@@ -78,22 +77,14 @@ class MiddlewareQueue implements Countable, SeekableIterator
                     $middleware
                 ));
             }
-            $middleware = new $className();
+
+            return new $className();
         }
 
         if ($middleware instanceof MiddlewareInterface) {
             return $middleware;
         }
 
-        if (!$middleware instanceof Closure) {
-            return new DoublePassDecoratorMiddleware($middleware);
-        }
-
-        $info = new ReflectionFunction($middleware);
-        if ($info->getNumberOfParameters() > 2) {
-            return new DoublePassDecoratorMiddleware($middleware);
-        }
-
         return new ClosureDecoratorMiddleware($middleware);
     }
 

+ 0 - 15
tests/TestCase/Http/MiddlewareQueueTest.php

@@ -368,19 +368,4 @@ class MiddlewareQueueTest extends TestCase
         $queue->next();
         $this->assertSame($three, $queue->current()->getCallable());
     }
-
-    /**
-     * @deprecated
-     */
-    public function testAddingDeprecatedDoublePassMiddleware(): void
-    {
-        $queue = new MiddlewareQueue();
-        $cb = function ($request, $response, $next) {
-            return $next($request, $response);
-        };
-        $queue->add($cb);
-        $this->deprecated(function () use ($queue, $cb): void {
-            $this->assertSame($cb, $queue->current()->getCallable());
-        });
-    }
 }