Skip to content

Commit 23c23c4

Browse files
loks0nclaude
andcommitted
Rename request-scoped helpers to use 'context' terminology
Singletons stay under setResource/getResource (the global container); per-request values are now setContext (the request container). The adapters' coroutine-context key and local variable rename to match: - Http::setRequestResource() -> Http::setContext() - Adapter\Swoole\Server::REQUEST_CONTAINER_CONTEXT_KEY -> Adapter\Swoole\Server::CONTEXT_KEY - same in Adapter\SwooleCoroutine\Server - $requestContainer locals -> $context - internal storage key '__utopia_http_request_container' -> '__utopia_http_context' setContext is protected, so this is internal-only — no application API break. Subclasses overriding the old name need to rename. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 042ed2e commit 23c23c4

3 files changed

Lines changed: 30 additions & 24 deletions

File tree

src/Http/Adapter/Swoole/Server.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
class Server extends Adapter
1313
{
1414
protected SwooleServer $server;
15-
protected const string REQUEST_CONTAINER_CONTEXT_KEY = '__utopia_http_request_container';
15+
protected const string CONTEXT_KEY = '__utopia_http_context';
1616
protected Container $container;
1717

1818
/**
@@ -28,11 +28,11 @@ public function __construct(string $host, ?string $port = null, array $settings
2828
public function onRequest(callable $callback): void
2929
{
3030
$this->server->on('request', function (SwooleRequest $request, SwooleResponse $response) use ($callback) {
31-
$requestContainer = new Container($this->container);
32-
$requestContainer->set('swooleRequest', fn() => $request);
33-
$requestContainer->set('swooleResponse', fn() => $response);
31+
$context = new Container($this->container);
32+
$context->set('swooleRequest', fn() => $request);
33+
$context->set('swooleResponse', fn() => $response);
3434

35-
Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] = $requestContainer;
35+
Coroutine::getContext()[self::CONTEXT_KEY] = $context;
3636

3737
\call_user_func($callback, new Request($request), new Response($response));
3838
});
@@ -41,7 +41,7 @@ public function onRequest(callable $callback): void
4141
public function getContainer(): Container
4242
{
4343
if (Coroutine::getCid() !== -1) {
44-
return Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] ?? $this->container;
44+
return Coroutine::getContext()[self::CONTEXT_KEY] ?? $this->container;
4545
}
4646

4747
return $this->container;

src/Http/Adapter/SwooleCoroutine/Server.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
class Server extends Adapter
1313
{
14-
protected const string REQUEST_CONTAINER_CONTEXT_KEY = '__utopia_http_request_container';
14+
protected const string CONTEXT_KEY = '__utopia_http_context';
1515

1616
protected SwooleServer $server;
1717
protected Container $container;
@@ -36,23 +36,23 @@ public function __construct(
3636
public function onRequest(callable $callback): void
3737
{
3838
$this->server->handle('/', function (SwooleRequest $request, SwooleResponse $response) use ($callback) {
39-
$requestContainer = new Container($this->container);
40-
$requestContainer->set('swooleRequest', fn() => $request);
41-
$requestContainer->set('swooleResponse', fn() => $response);
39+
$context = new Container($this->container);
40+
$context->set('swooleRequest', fn() => $request);
41+
$context->set('swooleResponse', fn() => $response);
4242

43-
Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] = $requestContainer;
43+
Coroutine::getContext()[self::CONTEXT_KEY] = $context;
4444

4545
try {
4646
\call_user_func($callback, new Request($request), new Response($response));
4747
} finally {
48-
unset(Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY]);
48+
unset(Coroutine::getContext()[self::CONTEXT_KEY]);
4949
}
5050
});
5151
}
5252

5353
public function getContainer(): Container
5454
{
55-
return Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] ?? $this->container;
55+
return Coroutine::getContext()[self::CONTEXT_KEY] ?? $this->container;
5656
}
5757

5858
public function getServer(): SwooleServer

src/Http/Http.php

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -406,11 +406,17 @@ public function setResource(string $name, callable $callback, array $injections
406406
}
407407

408408
/**
409-
* Set a request-scoped resource on the current request's container.
409+
* Set a request-scoped value on the current request's context container.
410+
*
411+
* The framework convention is: `setResource()` registers singletons on
412+
* the global container; `setContext()` registers per-request values on
413+
* the adapter's request container, which is coroutine-local under the
414+
* Swoole adapters. `getResource()` reads from the request container
415+
* with parent-fallback to the global one, so either kind resolves.
410416
*
411417
* @param list<string> $injections
412418
*/
413-
protected function setRequestResource(string $name, callable $callback, array $injections = []): void
419+
protected function setContext(string $name, callable $callback, array $injections = []): void
414420
{
415421
$this->server->getContainer()->set($name, $callback, $injections);
416422
}
@@ -674,7 +680,7 @@ public function execute(Route $route, Request $request, Response $response): sta
674680
}
675681
}
676682
} catch (\Throwable $e) {
677-
$this->setRequestResource('error', fn() => $e, []);
683+
$this->setContext('error', fn() => $e, []);
678684

679685
foreach ($groups as $group) {
680686
foreach (self::$errors as $error) { // Group error hooks
@@ -793,16 +799,16 @@ private function runInternal(Request $request, Response $response): static
793799
$response->setCompressionSupported($this->compressionSupported);
794800
}
795801

796-
$this->setRequestResource('request', fn() => $request);
797-
$this->setRequestResource('response', fn() => $response);
802+
$this->setContext('request', fn() => $request);
803+
$this->setContext('response', fn() => $response);
798804

799805
try {
800806
foreach (self::$requestHooks as $hook) {
801807
$arguments = $this->getArguments($hook, [], []);
802808
\call_user_func_array($hook->getAction(), $arguments);
803809
}
804810
} catch (\Exception $e) {
805-
$this->setRequestResource('error', fn() => $e, []);
811+
$this->setContext('error', fn() => $e, []);
806812

807813
foreach (self::$errors as $error) { // Global error hooks
808814
if (\in_array('*', $error->getGroups())) {
@@ -832,7 +838,7 @@ private function runInternal(Request $request, Response $response): static
832838
$route = $this->match($request);
833839
$groups = ($route instanceof Route) ? $route->getGroups() : [];
834840

835-
$this->setRequestResource('route', fn() => $route, []);
841+
$this->setContext('route', fn() => $route, []);
836842

837843
if (self::REQUEST_METHOD_HEAD === $method) {
838844
$method = self::REQUEST_METHOD_GET;
@@ -860,7 +866,7 @@ private function runInternal(Request $request, Response $response): static
860866
foreach (self::$errors as $error) { // Global error hooks
861867
/** @var Hook $error */
862868
if (\in_array('*', $error->getGroups())) {
863-
$this->setRequestResource('error', fn() => $e, []);
869+
$this->setContext('error', fn() => $e, []);
864870
\call_user_func_array($error->getAction(), $this->getArguments($error, [], $request->getParams()));
865871
}
866872
}
@@ -878,7 +884,7 @@ private function runInternal(Request $request, Response $response): static
878884
$route->path($path);
879885

880886
$this->setRoute($route);
881-
$this->setRequestResource('route', fn() => $route, []);
887+
$this->setContext('route', fn() => $route, []);
882888
}
883889
if (null !== $route) {
884890
return $this->execute($route, $request, $response);
@@ -902,15 +908,15 @@ private function runInternal(Request $request, Response $response): static
902908
} catch (\Throwable $e) {
903909
foreach (self::$errors as $error) { // Global error hooks
904910
if (\in_array('*', $error->getGroups())) {
905-
$this->setRequestResource('error', fn() => $e, []);
911+
$this->setContext('error', fn() => $e, []);
906912
\call_user_func_array($error->getAction(), $this->getArguments($error, [], $request->getParams()));
907913
}
908914
}
909915
}
910916
} else {
911917
foreach (self::$errors as $error) { // Global error hooks
912918
if (\in_array('*', $error->getGroups())) {
913-
$this->setRequestResource('error', fn() => new Exception('Not Found', 404), []);
919+
$this->setContext('error', fn() => new Exception('Not Found', 404), []);
914920
\call_user_func_array($error->getAction(), $this->getArguments($error, [], $request->getParams()));
915921
}
916922
}

0 commit comments

Comments
 (0)