Anax Response module to send HTTP responses.
The module is used to send a HTTP response from the Anax framework, including status code, headers, and body.
- Class, interface, trait
- Exceptions
- Configuration file
- DI service
- General usage within the Anax framework
- Access as framework service
- Create, init and use an object
The following classes, interfaces and traits exists.
Class, interface, trait | Description |
---|---|
Anax\Response\Response |
Wrapper class for response details and related. |
Anax\Response\ResponseUtility |
Extends the Request class to be injectable with $id to enable easy to use redirect methods. |
Module specific exceptions are thrown through Anax\Response\Exception
.
There is no configuration file for this module.
The module is created as a framework service within $di
. You can see the details in the configuration file config/di/response.php
.
It can look like this.
/**
* Configuration file for DI container.
*/
return [
// Services to add to the container.
"services" => [
"response" => [
"shared" => true,
//"callback" => "\Anax\Response\Response",
"callback" => function () {
$obj = new \Anax\Response\ResponseUtility();
$obj->setDI($this);
return $obj;
}
],
],
];
- The object is created as a shared resource.
- DI is injected into the module, when using ResponseUtility.
The service is lazy loaded and not created until it is used.
The response service is a mandatory service within the Anax framework and it is the first service used when handling a request to the framework.
Here is the general flow for receiving a request, mapping it to a route and returning a response. This is found in the frontcontroller htdocs/index.php
of an Anax installation.
// Leave to router to match incoming request to routes
$response = $di->get("router")->handle(
$di->get("request")->getRoute(),
$di->get("request")->getMethod()
);
// Send the HTTP response with headers and body
$di->get("response")->send($response);
The request is used to get the request method and the route path, these are used by the router service to find a callback for the route. Each callback can then return a response which is sent through the response service.
You can access the module as a framework service.
# $app style
$app->response->redirectSelf();
# $di style, two alternatives
$di->get("response")->redirectSelf();
$response = $di->get("response");
$response->redirectSelf();
This is how the object can be created. This is usually done within the framework as a sevice in $di
.
# Create an object
response = new \Anax\Response\Response();
# Send a response
response->send("Some response");
response->sendJson(["key" => "Some value"]);
response->redirect($absoluteUrl);
The added benefit of using ResponseUtility is that this class is injected with DI and makes it easier to use the redirect methods for urls within the framework.
# Create an object
response = new \Anax\Response\ResponseUtility();
# Do a redirect
response->redirect("game/init");
response->redirectSelf();
This software carries a MIT license. See LICENSE.txt for details.
.
..: Copyright (c) 2013 - 2019 Mikael Roos, [email protected]