Skip to content

Commit 0305041

Browse files
committed
Merge pull request #9 from cspray/0.5.0-dev
0.5.0 dev
2 parents eba8c71 + b1ed997 commit 0305041

File tree

6 files changed

+44
-13
lines changed

6 files changed

+44
-13
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## v0.5.0 - 2016-02-14
4+
5+
- **BC BREAK** Renames `Services::createInjector` to `Services::wireObjectGraph` and allows an Injector to be passed to
6+
add services instead of simply creating a new Injector.
7+
- Adds a new event `Engine::RESPONSE_SENT_EVENT` that will be triggered *everytime* a Response is sent to the user. Before
8+
this change there was no guaranteed mechanism for capturing the Response sent to the user. While the
9+
`Engine::AFTER_CONTROLLER_EVENT` does provide the Response it is not guaranteed to be emitted on every Request (e.g.
10+
an Exception is thrown or a Response is set in a `Engine::BEFORE_CONTROLLER_EVENT` listener).
11+
312
## v0.4.0 - 2016-02-13
413

514
- Updates FastRoute to 0.7.0

src/Engine.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
use Cspray\Labrador\CoreEngine;
1515
use Cspray\Labrador\Http\Event\AfterControllerEvent;
1616
use Cspray\Labrador\Http\Event\BeforeControllerEvent;
17+
use Cspray\Labrador\Http\Event\ResponseSentEvent;
1718
use Cspray\Labrador\PluginManager;
18-
use Cspray\Labrador\Event\AppExecuteEvent;
1919
use Cspray\Labrador\Http\Router\Router;
2020
use Cspray\Labrador\Http\Exception\InvalidTypeException;
2121
use Symfony\Component\HttpFoundation\Request;
@@ -26,10 +26,10 @@ class Engine extends CoreEngine {
2626

2727
const BEFORE_CONTROLLER_EVENT = 'labrador.http.before_controller';
2828
const AFTER_CONTROLLER_EVENT = 'labrador.http.after_controller';
29+
const RESPONSE_SENT_EVENT = 'labrador.http.response_sent';
2930

3031
private $emitter;
3132
private $router;
32-
private $eventFactory;
3333

3434
/**
3535
* @param Router $router
@@ -48,7 +48,12 @@ public function __construct(
4848

4949
public function run(Request $req = null) {
5050
$cb = function() use($req) {
51-
$this->handleRequest($req ?? Request::createFromGlobals())->send();
51+
$request = $req ?? Request::createFromGlobals();
52+
$response = $this->handleRequest($request);
53+
$response->send();
54+
55+
$event = new ResponseSentEvent($request, $response);
56+
$this->emitter->emit($event);
5257
};
5358
$cb = $cb->bindTo($this);
5459
$this->emitter->addListener(self::APP_EXECUTE_EVENT, $cb);

src/Event/ResponseSentEvent.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
/**
6+
* @license See LICENSE file in project root
7+
*/
8+
9+
namespace Cspray\Labrador\Http\Event;
10+
11+
use Cspray\Labrador\Http\Engine;
12+
use Symfony\Component\HttpFoundation\Request;
13+
use Symfony\Component\HttpFoundation\Response;
14+
15+
class ResponseSentEvent extends HttpEvent {
16+
17+
public function __construct(Request $request, Response $response) {
18+
parent::__construct($request, Engine::RESPONSE_SENT_EVENT);
19+
$this->setResponse($response);
20+
}
21+
22+
}

src/Services.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,8 @@
3131

3232
class Services {
3333

34-
public function createInjector() {
35-
$injector = new Injector();
36-
$this->wireObjectGraph($injector);
37-
38-
return $injector;
39-
}
40-
41-
private function wireObjectGraph(Injector $injector) {
34+
public function wireObjectGraph(Injector $injector = null) : Injector {
35+
$injector = $injector ?? new Injector();
4236
$injector->share($injector);
4337
$this->registerCoreLabradorServices($injector);
4438
$this->registerCoreHttpServices($injector);

src/_functions.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
use Cspray\Labrador\Engine;
1212
use Cspray\Labrador\Event\ExceptionThrownEvent;
1313
use Cspray\Labrador\Http\Services as HttpServices;
14-
use Cspray\Labrador\EnvironmentIntegrationConfig;
1514
use Auryn\Injector;
1615
use Whoops\Run;
1716

1817
function bootstrap() : Injector {
19-
$injector = (new HttpServices())->createInjector();
18+
$injector = (new HttpServices())->wireObjectGraph();
2019

2120
$run = $injector->make(Run::class);
2221

test/EngineTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace Cspray\Labrador\Http\Test;
1111

1212
use Cspray\Labrador\Event\ExceptionThrownEvent;
13+
use Cspray\Labrador\Http\Event\ResponseSentEvent;
1314
use Cspray\Labrador\PluginManager;
1415
use Cspray\Labrador\Http\Event\BeforeControllerEvent;
1516
use Cspray\Labrador\Http\Event\AfterControllerEvent;
@@ -65,6 +66,7 @@ public function eventEmittingOrderProvider() {
6566
return [
6667
[0, Engine::BEFORE_CONTROLLER_EVENT, BeforeControllerEvent::class],
6768
[1, Engine::AFTER_CONTROLLER_EVENT, AfterControllerEvent::class],
69+
[2, Engine::RESPONSE_SENT_EVENT, ResponseSentEvent::class]
6870
];
6971
}
7072

0 commit comments

Comments
 (0)