Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit f86b8d0

Browse files
committed
Merge pull request #547 from xtreamwayz/hotfix/disable-shared-response
Remove disabling shared ResponseInterface Conflicts: src/ConfigProvider.php test/ConfigProviderTest.php
2 parents 995f5a2 + 23a3b0c commit f86b8d0

File tree

8 files changed

+52
-27
lines changed

8 files changed

+52
-27
lines changed

src/ConfigProvider.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
namespace Zend\Expressive;
1111

12-
use Psr\Http\Message\ResponseInterface;
12+
use Zend\Expressive\Response\NotFoundResponseInterface;
13+
use Zend\Expressive\Response\RouterResponseInterface;
1314
use Zend\HttpHandlerRunner\Emitter\EmitterInterface;
1415
use Zend\HttpHandlerRunner\RequestHandlerRunner;
1516
use Zend\Stratigility\Middleware\ErrorHandler;
@@ -47,17 +48,14 @@ public function getDependencies() : array
4748
// Change the following in development to the WhoopsErrorResponseGeneratorFactory:
4849
Middleware\ErrorResponseGenerator::class => Container\ErrorResponseGeneratorFactory::class,
4950
Middleware\NotFoundMiddleware::class => Container\NotFoundMiddlewareFactory::class,
51+
NotFoundResponseInterface::class => Container\ResponseFactory::class,
5052
RequestHandlerRunner::class => Container\RequestHandlerRunnerFactory::class,
51-
ResponseInterface::class => Container\ResponseFactory::class,
5253
Router\DispatchMiddleware::class => Container\DispatchMiddlewareFactory::class,
5354
Router\PathBasedRoutingMiddleware::class => Container\RouteMiddlewareFactory::class,
55+
RouterResponseInterface::class => Container\ResponseFactory::class,
5456
ServerRequestErrorResponseGenerator::class => Container\ServerRequestErrorResponseGeneratorFactory::class,
5557
ServerRequestFactory::class => Container\ServerRequestFactoryFactory::class,
5658
],
57-
'shared' => [
58-
// Do not share response instances
59-
ResponseInterface::class => false,
60-
],
6159
];
6260
// @codingStandardsIgnoreEnd
6361
}

src/Container/NotFoundMiddlewareFactory.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
namespace Zend\Expressive\Container;
1111

1212
use Psr\Container\ContainerInterface;
13-
use Psr\Http\Message\ResponseInterface;
1413
use Zend\Expressive\Middleware\NotFoundMiddleware;
14+
use Zend\Expressive\Response\NotFoundResponseInterface;
1515
use Zend\Expressive\Template\TemplateRendererInterface;
1616

1717
class NotFoundMiddlewareFactory
@@ -23,12 +23,12 @@ public function __invoke(ContainerInterface $container) : NotFoundMiddleware
2323
? $container->get(TemplateRendererInterface::class)
2424
: null;
2525
$template = $config['zend-expressive']['error_handler']['template_404']
26-
?? NotFoundMiddleware::TEMPLATE_DEFAULT;
27-
$layout = $config['zend-expressive']['error_handler']['layout']
28-
?? NotFoundMiddleware::LAYOUT_DEFAULT;
26+
?? NotFoundMiddleware::TEMPLATE_DEFAULT;
27+
$layout = $config['zend-expressive']['error_handler']['layout']
28+
?? NotFoundMiddleware::LAYOUT_DEFAULT;
2929

3030
return new NotFoundMiddleware(
31-
$container->get(ResponseInterface::class),
31+
$container->get(NotFoundResponseInterface::class),
3232
$renderer,
3333
$template,
3434
$layout

src/Container/RouteMiddlewareFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace Zend\Expressive\Container;
1111

1212
use Psr\Container\ContainerInterface;
13-
use Psr\Http\Message\ResponseInterface;
13+
use Zend\Expressive\Response\RouterResponseInterface;
1414
use Zend\Expressive\Router\PathBasedRoutingMiddleware;
1515
use Zend\Expressive\Router\RouterInterface;
1616

@@ -20,7 +20,7 @@ public function __invoke(ContainerInterface $container) : PathBasedRoutingMiddle
2020
{
2121
return new PathBasedRoutingMiddleware(
2222
$container->get(RouterInterface::class),
23-
$container->get(ResponseInterface::class)
23+
$container->get(RouterResponseInterface::class)
2424
);
2525
}
2626
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
/**
3+
* @see https://github.com/zendframework/zend-expressive for the canonical source repository
4+
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (https://www.zend.com)
5+
* @license https://github.com/zendframework/zend-expressive/blob/master/LICENSE.md New BSD License
6+
*/
7+
8+
declare(strict_types=1);
9+
10+
namespace Zend\Expressive\Response;
11+
12+
use Psr\Http\Message\ResponseInterface;
13+
14+
interface NotFoundResponseInterface extends ResponseInterface
15+
{
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
/**
3+
* @see https://github.com/zendframework/zend-expressive for the canonical source repository
4+
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (https://www.zend.com)
5+
* @license https://github.com/zendframework/zend-expressive/blob/master/LICENSE.md New BSD License
6+
*/
7+
8+
declare(strict_types=1);
9+
10+
namespace Zend\Expressive\Response;
11+
12+
use Psr\Http\Message\ResponseInterface;
13+
14+
interface RouterResponseInterface extends ResponseInterface
15+
{
16+
}

test/ConfigProviderTest.php

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
use Zend\Expressive\Middleware;
1919
use Zend\Expressive\MiddlewareContainer;
2020
use Zend\Expressive\MiddlewareFactory;
21+
use Zend\Expressive\Response\NotFoundResponseInterface;
22+
use Zend\Expressive\Response\RouterResponseInterface;
2123
use Zend\Expressive\Router\DispatchMiddleware;
2224
use Zend\Expressive\Router\PathBasedRoutingMiddleware;
2325
use Zend\Expressive\ServerRequestErrorResponseGenerator;
@@ -49,36 +51,27 @@ public function testProviderDefinesExpectedFactoryServices()
4951

5052
$this->assertArrayHasKey(Application::class, $factories);
5153
$this->assertArrayHasKey(ApplicationPipeline::class, $factories);
54+
$this->assertArrayHasKey(DispatchMiddleware::class, $factories);
5255
$this->assertArrayHasKey(EmitterInterface::class, $factories);
5356
$this->assertArrayHasKey(ErrorHandler::class, $factories);
5457
$this->assertArrayHasKey(MiddlewareContainer::class, $factories);
5558
$this->assertArrayHasKey(MiddlewareFactory::class, $factories);
56-
$this->assertArrayHasKey(DispatchMiddleware::class, $factories);
5759
$this->assertArrayHasKey(Middleware\ErrorResponseGenerator::class, $factories);
5860
$this->assertArrayHasKey(Middleware\NotFoundMiddleware::class, $factories);
61+
$this->assertArrayHasKey(NotFoundResponseInterface::class, $factories);
5962
$this->assertArrayHasKey(PathBasedRoutingMiddleware::class, $factories);
6063
$this->assertArrayHasKey(RequestHandlerRunner::class, $factories);
61-
$this->assertArrayHasKey(ResponseInterface::class, $factories);
64+
$this->assertArrayHasKey(RouterResponseInterface::class, $factories);
6265
$this->assertArrayHasKey(ServerRequestErrorResponseGenerator::class, $factories);
6366
$this->assertArrayHasKey(ServerRequestFactory::class, $factories);
6467
}
6568

66-
public function testResponseIsMarkedAsUnshared()
67-
{
68-
$config = $this->provider->getDependencies();
69-
$shared = $config['shared'];
70-
71-
$this->assertArrayHasKey(ResponseInterface::class, $shared);
72-
$this->assertFalse($shared[ResponseInterface::class]);
73-
}
74-
7569
public function testInvocationReturnsArrayWithDependencies()
7670
{
7771
$config = ($this->provider)();
7872
$this->assertInternalType('array', $config);
7973
$this->assertArrayHasKey('dependencies', $config);
8074
$this->assertArrayHasKey('aliases', $config['dependencies']);
8175
$this->assertArrayHasKey('factories', $config['dependencies']);
82-
$this->assertArrayHasKey('shared', $config['dependencies']);
8376
}
8477
}

test/Container/NotFoundMiddlewareFactoryTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Psr\Http\Message\ResponseInterface;
1616
use Zend\Expressive\Container\NotFoundMiddlewareFactory;
1717
use Zend\Expressive\Middleware\NotFoundMiddleware;
18+
use Zend\Expressive\Response\NotFoundResponseInterface;
1819
use Zend\Expressive\Template\TemplateRendererInterface;
1920

2021
class NotFoundMiddlewareFactoryTest extends TestCase
@@ -29,7 +30,7 @@ protected function setUp()
2930
{
3031
$this->response = $this->prophesize(ResponseInterface::class)->reveal();
3132
$this->container = $this->prophesize(ContainerInterface::class);
32-
$this->container->get(ResponseInterface::class)->willReturn($this->response);
33+
$this->container->get(NotFoundResponseInterface::class)->willReturn($this->response);
3334
}
3435

3536
public function testFactoryCreatesInstanceWithoutRendererIfRendererServiceIsMissing()

test/Container/RouteMiddlewareFactoryTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Psr\Container\ContainerInterface;
1414
use Psr\Http\Message\ResponseInterface;
1515
use Zend\Expressive\Container\RouteMiddlewareFactory;
16+
use Zend\Expressive\Response\RouterResponseInterface;
1617
use Zend\Expressive\Router\PathBasedRoutingMiddleware;
1718
use Zend\Expressive\Router\RouterInterface;
1819

@@ -24,7 +25,7 @@ public function testFactoryProducesPathBasedRoutingMiddleware()
2425
$response = $this->prophesize(ResponseInterface::class)->reveal();
2526
$container = $this->prophesize(ContainerInterface::class);
2627
$container->get(RouterInterface::class)->willReturn($router);
27-
$container->get(ResponseInterface::class)->willReturn($response);
28+
$container->get(RouterResponseInterface::class)->willReturn($response);
2829

2930
$factory = new RouteMiddlewareFactory();
3031

0 commit comments

Comments
 (0)