REST
REST
Base Controller class.
All controller classes extend this class. Normally this class would only be extended by the controller classes provided by Hazaar MVC, as how a controller actually behaves and the functionality it provides is actually defined by the controller itself. This controller does nothing, but will still initialise and run, but will output nothing.
- Full name:
\Hazaar\Controller\REST
- Parent class:
\Hazaar\Controller
- This class is an Abstract class
Properties
request
The request object.
protected \Hazaar\Application\Request\HTTP $request
Methods
initialize
Initializes the REST controller.
public initialize(\Hazaar\Application\Request $request): ?\Hazaar\Controller\Response
Parameters:
Parameter | Type | Description |
---|---|---|
$request | \Hazaar\Application\Request | the application request object |
Throws:
if there is an invalid JSON parameter
runAction
This method runs the REST API endpoint by matching the request method and path with the available endpoints.
public runAction(string $actionName, array $actionArgs = [], bool $namedActionArgs = false): \Hazaar\Controller\Response
If a match is found, it sets the endpoint and its arguments and breaks the loop. If the request method is OPTIONS, it returns a JSON response with the allowed methods for the endpoint. If the endpoint is not found, it throws a 404 exception. If the endpoint is found and the 'init' method exists, it calls the 'init' method and returns its response if it is an instance of \Hazaar\Controller\Response. Otherwise, it executes the endpoint with its arguments and returns the response.
Parameters:
Parameter | Type | Description |
---|---|---|
$actionName | string | |
$actionArgs | array | |
$namedActionArgs | bool |
Return Value:
the response of the endpoint or a JSON response with the allowed methods for the endpoint
Throws:
if the endpoint is not found or directory listing is not allowed
init
Initializes the REST controller.
protected init(\Hazaar\Application\Request\HTTP $request): void
Parameters:
Parameter | Type | Description |
---|---|---|
$request | \Hazaar\Application\Request\HTTP |
initResponse
protected initResponse(\Hazaar\Application\Request\HTTP $request): ?\Hazaar\Controller\Response
Parameters:
Parameter | Type | Description |
---|---|---|
$request | \Hazaar\Application\Request\HTTP |
Inherited methods
__construct
Base controller constructor.
public __construct(string $name = null): mixed
Parameters:
Parameter | Type | Description |
---|---|---|
$name | string | The name of the controller. This is the name used when generating URLs. |
__toString
Convert the controller object into a string.
public __toString(): string
__get
Get the specified helper object.
public __get(string $helper): ?\Hazaar\Controller\Helper
Parameters:
Parameter | Type | Description |
---|---|---|
$helper | string | the name of the helper |
initialize
Controller initialisation method.
public initialize(\Hazaar\Application\Request $request): ?\Hazaar\Controller\Response
This should be called by all extending controllers and is simply responsible for storing the calling request.
Parameters:
Parameter | Type | Description |
---|---|---|
$request | \Hazaar\Application\Request | the application request object |
run
public run(?\Hazaar\Application\Route $route = null): \Hazaar\Controller\Response
Parameters:
Parameter | Type | Description |
---|---|---|
$route | ?\Hazaar\Application\Route |
runAction
public runAction(string $actionName, array $actionArgs = []): false|\Hazaar\Controller\Response
Parameters:
Parameter | Type | Description |
---|---|---|
$actionName | string | |
$actionArgs | array |
shutdown
final public shutdown(\Hazaar\Controller\Response $response): void
- This method is final.
Parameters:
Parameter | Type | Description |
---|---|---|
$response | \Hazaar\Controller\Response |
getName
Get the name of the controller.
public getName(): string
setStatus
Set the default return status code.
public setStatus(?int $code = null): void
Parameters:
Parameter | Type | Description |
---|---|---|
$code | ?int |
getStatus
Get the status code of the controller.
public getStatus(): int
getBasePath
Get the base path of the controller.
public getBasePath(): string
setBasePath
Set the base path for the controller.
public setBasePath(string $path): void
Parameters:
Parameter | Type | Description |
---|---|---|
$path | string |
redirect
Generate a redirect response to redirect the browser.
public redirect(string $location, bool $saveURI = false): \Hazaar\Controller\Response\HTTP\Redirect
It's quite common to redirect the user to an alternative URL. This may be to forward the request to another website, forward them to an authentication page or even just remove processed request parameters from the URL to neaten the URL up.
Parameters:
Parameter | Type | Description |
---|---|---|
$location | string | The URI you want to redirect to |
$saveURI | bool | Optionally save the URI so we can redirect back. See: Hazaar\Application::redirectBack() |
redirectBack
Redirect back to a URI saved during redirection.
public redirectBack(?string $altURL = null): false|\Hazaar\Controller\Response\HTTP\Redirect
This mechanism is used with the $saveURI parameter of Hazaar\Application::redirect()
so save the current URI into the session so that once we're done processing the request somewhere else we can come back to where we were. This is useful for when a user requests a page but isn't authenticated, we can redirect them to a login page and then that page can call this Hazaar\Application::redirectBack()
method to redirect the user back to the page they were originally looking for.
Parameters:
Parameter | Type | Description |
---|---|---|
$altURL | ?string |
getURL
Generate a URL relative to the controller.
public getURL(): \Hazaar\Application\URL
This is the controller relative method for generating URLs in your application. URLs generated from here are relative to the controller. For URLs that are relative to the current application see Hazaar\Application::url()
.
Parameters are dynamic and depend on what you are trying to generate.
For examples see: Generating URLs
addHelper
Add a helper to the controller.
public addHelper((\Hazaar\Controller\Helper|string)[]|\Hazaar\Controller\Helper|string $helper, array $args = [], string $alias = null): bool
Parameters:
Parameter | Type | Description |
---|---|---|
$helper | (\Hazaar\Controller\Helper|string)[]|\Hazaar\Controller\Helper|string | The helper to add to the controller. This can be a helper object, a helper class name or an array of helpers. |
$args | array | an array of arguments to pass to the helper constructor |
$alias | string | The alias to use for the helper. If not provided, the helper name will be used. |
hasHelper
Checks if a helper exists.
public hasHelper(string $helper): bool
Parameters:
Parameter | Type | Description |
---|---|---|
$helper | string | the name of the helper to check |
cacheAction
public cacheAction(string $actionName, int $timeout = 60, bool $private = false): bool
Parameters:
Parameter | Type | Description |
---|---|---|
$actionName | string | |
$timeout | int | |
$private | bool |
findHelper
Find a helper class by name.
private findHelper(string $name): ?string
This method searches for view helper classes based on the given name. The search order is important because it allows apps to override built-in helpers.
Parameters:
Parameter | Type | Description |
---|---|---|
$name | string | the name of the helper class to find |
getCacheKey
Get the cache key for the current action.
private getCacheKey(string $controller, string $action, array $actionArgs = null, null|string& $cacheName = null): false|string
Parameters:
Parameter | Type | Description |
---|---|---|
$controller | string | the controller name |
$action | string | the action name |
$actionArgs | array | the action arguments |
$cacheName | null|string | the cache name |
cacheResponse
private cacheResponse(\Hazaar\Application\Route $route, \Hazaar\Controller\Response $response): bool
Parameters:
Parameter | Type | Description |
---|---|---|
$route | \Hazaar\Application\Route | |
$response | \Hazaar\Controller\Response |
getCachedResponse
private getCachedResponse(\Hazaar\Application\Route $route): ?\Hazaar\Controller\Response
Parameters:
Parameter | Type | Description |
---|---|---|
$route | \Hazaar\Application\Route |
Automatically generated on 2024-11-14