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

Commit dc1ae72

Browse files
committed
Merge branch 'hotfix/547-shared-services' into release-3.0.0
Close #547
2 parents 995f5a2 + b6ff206 commit dc1ae72

File tree

7 files changed

+52
-28
lines changed

7 files changed

+52
-28
lines changed

CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,40 @@
22

33
All notable changes to this project will be documented in this file, in reverse chronological order by release.
44

5+
## 3.0.0alpha5 - 2018-02-07
6+
7+
### Added
8+
9+
- Nothing.
10+
11+
### Changed
12+
13+
- [#547](https://github.com/zendframework/zend-expressive/pull/547) modifies the
14+
`ConfigProvider`, the `NotFoundMiddlewareFactory`, and the
15+
`RouteMiddlewareFactory` to remove the concept of the _unshared_
16+
`ResponseInterface` service, as service sharing is not always configurable in
17+
container implementations. To resolve the ability to provide discrete
18+
instances, the `ConfigProvider` defines two new virtual services that each
19+
resolve to the `Zend\Expressive\Container\ResponseFactory`:
20+
21+
- `Zend\Expressive\Response\NotFoundResponseInterface`
22+
- `Zend\Expressive\Response\RouterResponseInterface`
23+
24+
The related factories now consume these services in order to receive a
25+
response prototype for the services they produce.
26+
27+
### Deprecated
28+
29+
- Nothing.
30+
31+
### Removed
32+
33+
- Nothing.
34+
35+
### Fixed
36+
37+
- Nothing.
38+
539
## 3.0.0alpha4 - 2018-02-07
640

741
### Added

src/ConfigProvider.php

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

1010
namespace Zend\Expressive;
1111

12-
use Psr\Http\Message\ResponseInterface;
1312
use Zend\HttpHandlerRunner\Emitter\EmitterInterface;
1413
use Zend\HttpHandlerRunner\RequestHandlerRunner;
1514
use Zend\Stratigility\Middleware\ErrorHandler;
@@ -48,16 +47,13 @@ public function getDependencies() : array
4847
Middleware\ErrorResponseGenerator::class => Container\ErrorResponseGeneratorFactory::class,
4948
Middleware\NotFoundMiddleware::class => Container\NotFoundMiddlewareFactory::class,
5049
RequestHandlerRunner::class => Container\RequestHandlerRunnerFactory::class,
51-
ResponseInterface::class => Container\ResponseFactory::class,
50+
Response\NotFoundResponseInterface::class => Container\ResponseFactory::class,
51+
Response\RouterResponseInterface::class => Container\ResponseFactory::class,
5252
Router\DispatchMiddleware::class => Container\DispatchMiddlewareFactory::class,
5353
Router\PathBasedRoutingMiddleware::class => Container\RouteMiddlewareFactory::class,
5454
ServerRequestErrorResponseGenerator::class => Container\ServerRequestErrorResponseGeneratorFactory::class,
5555
ServerRequestFactory::class => Container\ServerRequestFactoryFactory::class,
5656
],
57-
'shared' => [
58-
// Do not share response instances
59-
ResponseInterface::class => false,
60-
],
6157
];
6258
// @codingStandardsIgnoreEnd
6359
}

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
}

test/ConfigProviderTest.php

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@
1010
namespace ZendTest\Expressive;
1111

1212
use PHPUnit\Framework\TestCase;
13-
use Psr\Http\Message\ResponseInterface;
1413
use Zend\Expressive\Application;
1514
use Zend\Expressive\ApplicationPipeline;
1615
use Zend\Expressive\ConfigProvider;
1716
use Zend\Expressive\Delegate\DefaultDelegate;
1817
use Zend\Expressive\Middleware;
1918
use Zend\Expressive\MiddlewareContainer;
2019
use Zend\Expressive\MiddlewareFactory;
20+
use Zend\Expressive\Response\NotFoundResponseInterface;
21+
use Zend\Expressive\Response\RouterResponseInterface;
2122
use Zend\Expressive\Router\DispatchMiddleware;
2223
use Zend\Expressive\Router\PathBasedRoutingMiddleware;
2324
use Zend\Expressive\ServerRequestErrorResponseGenerator;
@@ -49,36 +50,27 @@ public function testProviderDefinesExpectedFactoryServices()
4950

5051
$this->assertArrayHasKey(Application::class, $factories);
5152
$this->assertArrayHasKey(ApplicationPipeline::class, $factories);
53+
$this->assertArrayHasKey(DispatchMiddleware::class, $factories);
5254
$this->assertArrayHasKey(EmitterInterface::class, $factories);
5355
$this->assertArrayHasKey(ErrorHandler::class, $factories);
5456
$this->assertArrayHasKey(MiddlewareContainer::class, $factories);
5557
$this->assertArrayHasKey(MiddlewareFactory::class, $factories);
56-
$this->assertArrayHasKey(DispatchMiddleware::class, $factories);
5758
$this->assertArrayHasKey(Middleware\ErrorResponseGenerator::class, $factories);
5859
$this->assertArrayHasKey(Middleware\NotFoundMiddleware::class, $factories);
60+
$this->assertArrayHasKey(NotFoundResponseInterface::class, $factories);
5961
$this->assertArrayHasKey(PathBasedRoutingMiddleware::class, $factories);
6062
$this->assertArrayHasKey(RequestHandlerRunner::class, $factories);
61-
$this->assertArrayHasKey(ResponseInterface::class, $factories);
63+
$this->assertArrayHasKey(RouterResponseInterface::class, $factories);
6264
$this->assertArrayHasKey(ServerRequestErrorResponseGenerator::class, $factories);
6365
$this->assertArrayHasKey(ServerRequestFactory::class, $factories);
6466
}
6567

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-
7568
public function testInvocationReturnsArrayWithDependencies()
7669
{
7770
$config = ($this->provider)();
7871
$this->assertInternalType('array', $config);
7972
$this->assertArrayHasKey('dependencies', $config);
8073
$this->assertArrayHasKey('aliases', $config['dependencies']);
8174
$this->assertArrayHasKey('factories', $config['dependencies']);
82-
$this->assertArrayHasKey('shared', $config['dependencies']);
8375
}
8476
}

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)