PostRoute extends HttpMethodRoute
Represents a route that registers an HTTP POST verb.
This class extends MethodRoute and implements the registerRoute
template method to call the Slim App's post() method.
By convention, it sets the default controller method to 'post'.
Tags
Table of Contents
Constants
- APP = 'app'
- Array keys for route initialization
- CLAZZ = 'clazz'
- CONTROLLER_ID = 'controllerID'
- DEFAULT_OWNER_PLACEHOLDER = 'owner:[0-9]+'
- Default owner pattern for numeric owner IDs
- DEFAULT_PREFIX = 'api'
- Default API prefix for route names
- DEFAULT_ROUTE_PLACEHOLDER = 'id:[0-9]+'
- Default route pattern for numeric IDs
- FLAGS = 'flags'
- INTERNAL_METHOD = \oihana\enums\http\HttpMethod::post
- By convention, a POST route calls the 'post' method on the controller, unless specified otherwise in $init.
- LOGGABLE = 'loggable'
- The 'loggable' parameter constant.
- LOGGER = 'logger'
- The 'logger' parameter constant.
- METHOD = 'method'
- NAME = 'name'
- OWNER_PATTERN = 'ownerPattern'
- OWNER_PLACEHOLDER = 'ownerPlaceHolder'
- PATCH_PATTERN = 'patchPattern'
- PATCH_PLACE_HOLDER = 'patchPlaceHolder'
- PREFIX = 'prefix'
- PROPERTY = 'property'
- ROUTE = 'route'
- ROUTE_PATTERN = 'routePattern'
- ROUTE_PLACEHOLDER = 'routePattern'
- ROUTES = 'routes'
- SUFFIX = 'suffix'
Properties
- $container : Container
- The DI container reference.
- $controllerID : string|null
- $loggable : bool
- The loggable flag.
- $method : string|mixed
- The name of the method to call in the controller to invoke with this route.
- $name : string|null
- $ownerPlaceholder : string|null
- $prefix : string
- $property : string
- $route : string|null
- $routePlaceholder : string
- $routes : array<string|int, mixed>|null
- $suffix : string
- $app : App
- The Slim App instance.
Methods
- __construct() : mixed
- Creates a new MethodRoute instance.
- __invoke() : void
- Main entry point.
- __toString() : string
- Returns a String representation of the object.
- alert() : void
- Action must be taken immediately.
- create() : Route|null
- Creates a new Route instance from a definition array or Route object.
- critical() : void
- Critical conditions.
- debug() : void
- Detailed debug information.
- dotify() : string
- Converts a route path from 'foo/bar' to 'foo.bar'.
- emergency() : void
- System is unusable.
- error() : void
- Runtime errors that do not require immediate action but should typically be logged and monitored.
- execute() : void
- Executes a callable or an array of callables.
- getBasePath() : string
- Returns the base path of the application.
- getLogger() : LoggerInterface|null
- Returns the logger reference.
- getName() : string
- Returns the fully qualified route name, including prefix and suffix.
- getRoute() : string
- Returns the safe main route representation starting with '/'.
- getUrl() : string
- Generates a full URL for the application.
- info() : void
- Interesting events.
- initializeApp() : static
- Initializes the internal `app` property.
- initializeLoggable() : static
- Initialize the loggable flag.
- initializeLogger() : static
- Initializes the logger reference for the current instance.
- initializeMethod() : $this
- Initialize the internal method property.
- log() : void
- Logs with an arbitrary level.
- notice() : void
- Normal but significant events.
- warning() : void
- Exceptional occurrences that are not errors.
- registerRoute() : void
- Implements the template method to register the route with the HTTP POST verb.
Constants
APP
Array keys for route initialization
public
mixed
APP
= 'app'
CLAZZ
public
mixed
CLAZZ
= 'clazz'
CONTROLLER_ID
public
mixed
CONTROLLER_ID
= 'controllerID'
DEFAULT_OWNER_PLACEHOLDER
Default owner pattern for numeric owner IDs
public
mixed
DEFAULT_OWNER_PLACEHOLDER
= 'owner:[0-9]+'
DEFAULT_PREFIX
Default API prefix for route names
public
mixed
DEFAULT_PREFIX
= 'api'
DEFAULT_ROUTE_PLACEHOLDER
Default route pattern for numeric IDs
public
mixed
DEFAULT_ROUTE_PLACEHOLDER
= 'id:[0-9]+'
FLAGS
public
mixed
FLAGS
= 'flags'
INTERNAL_METHOD
By convention, a POST route calls the 'post' method on the controller, unless specified otherwise in $init.
public
mixed
INTERNAL_METHOD
= \oihana\enums\http\HttpMethod::post
LOGGABLE
The 'loggable' parameter constant.
public
mixed
LOGGABLE
= 'loggable'
LOGGER
The 'logger' parameter constant.
public
mixed
LOGGER
= 'logger'
METHOD
public
mixed
METHOD
= 'method'
NAME
public
mixed
NAME
= 'name'
OWNER_PATTERN
public
mixed
OWNER_PATTERN
= 'ownerPattern'
OWNER_PLACEHOLDER
public
mixed
OWNER_PLACEHOLDER
= 'ownerPlaceHolder'
PATCH_PATTERN
public
mixed
PATCH_PATTERN
= 'patchPattern'
PATCH_PLACE_HOLDER
public
mixed
PATCH_PLACE_HOLDER
= 'patchPlaceHolder'
PREFIX
public
mixed
PREFIX
= 'prefix'
PROPERTY
public
mixed
PROPERTY
= 'property'
ROUTE
public
mixed
ROUTE
= 'route'
ROUTE_PATTERN
public
mixed
ROUTE_PATTERN
= 'routePattern'
ROUTE_PLACEHOLDER
public
mixed
ROUTE_PLACEHOLDER
= 'routePattern'
ROUTES
public
mixed
ROUTES
= 'routes'
SUFFIX
public
mixed
SUFFIX
= 'suffix'
Properties
$container
The DI container reference.
public
Container
$container
$controllerID
public
string|null
$controllerID
= null
Controller ID registered in DI container
$loggable
The loggable flag.
public
bool
$loggable
= false
$method
The name of the method to call in the controller to invoke with this route.
public
string|mixed
$method
$name
public
string|null
$name
= null
Route name
$ownerPlaceholder
public
string|null
$ownerPlaceholder
= self::DEFAULT_OWNER_PLACEHOLDER
The owner route placeholder.
$prefix
public
string
$prefix
= self::DEFAULT_PREFIX
Route name prefix
$property
public
string
$property
= \oihana\enums\Char::EMPTY
Property name in complex routes
$route
public
string|null
$route
= null
The route expression.
$routePlaceholder
public
string
$routePlaceholder
= self::DEFAULT_ROUTE_PLACEHOLDER
The route placeholder.
$routes
public
array<string|int, mixed>|null
$routes
= null
Nested route definitions.
$suffix
public
string
$suffix
= \oihana\enums\Char::EMPTY
Route name suffix
$app
The Slim App instance.
protected
App
$app
Tags
Methods
__construct()
Creates a new MethodRoute instance.
public
__construct(Container $container[, array<string|int, mixed> $init = [] ]) : mixed
Parameters
- $container : Container
-
The DI Container reference.
- $init : array<string|int, mixed> = []
-
The optional settings object.
Tags
__invoke()
Main entry point.
public
__invoke() : void
Validates the controller/method and calls the registerRoute template method.
Tags
__toString()
Returns a String representation of the object.
public
__toString() : string
Tags
Return values
string —A string representation of the object.
alert()
Action must be taken immediately.
public
alert(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Example: Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up.
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
create()
Creates a new Route instance from a definition array or Route object.
public
create(array<string|int, mixed>|Route|null $definition) : Route|null
Parameters
- $definition : array<string|int, mixed>|Route|null
-
Route definition or existing Route
Return values
Route|null —The created Route instance or null if invalid
critical()
Critical conditions.
public
critical(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Example: Application component unavailable, unexpected exception.
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
debug()
Detailed debug information.
public
debug(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
dotify()
Converts a route path from 'foo/bar' to 'foo.bar'.
public
dotify(string $route) : string
Parameters
- $route : string
-
Route path
Return values
string —Dotified route path
emergency()
System is unusable.
public
emergency(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
error()
Runtime errors that do not require immediate action but should typically be logged and monitored.
public
error(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
execute()
Executes a callable or an array of callables.
public
execute(mixed $routes) : void
Parameters
- $routes : mixed
-
Callable or array of callables
getBasePath()
Returns the base path of the application.
public
getBasePath() : string
This corresponds to the path configured in Slim and can be used to generate URLs relative to the application root.
Return values
string —The application's base path (e.g., "/myapp")
getLogger()
Returns the logger reference.
public
getLogger() : LoggerInterface|null
Return values
LoggerInterface|nullgetName()
Returns the fully qualified route name, including prefix and suffix.
public
getName() : string
Return values
string —Route name
getRoute()
Returns the safe main route representation starting with '/'.
public
getRoute() : string
Return values
string —Route path
getUrl()
Generates a full URL for the application.
public
getUrl([string $path = '' ][, array<string|int, mixed> $params = [] ][, bool $useNow = false ]) : string
The URL is constructed using the application's base URL, the base path, the optional path, and query parameters.
Parameters
- $path : string = ''
-
Optional relative path to append to the base URL.
- $params : array<string|int, mixed> = []
-
Optional query parameters as key-value pairs.
- $useNow : bool = false
-
If true, timestamp-like parameters will be processed immediately.
Return values
string —The full URL including base URL, path, and query parameters.
info()
Interesting events.
public
info(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Example: User logs in, SQL logs.
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
initializeApp()
Initializes the internal `app` property.
public
initializeApp([array<string|int, mixed> $init = [] ][, ContainerInterface|null $container = null ]) : static
This method retrieves the Slim App instance with a specific priority:
- From the provided initialization array (e.g., ['app' => App instance]).
- If not in the array, from the DI container (using App::class or a custom key from init).
It throws an exception if no valid App instance can be found. This priority allows for easy overriding/mocking during tests.
Parameters
- $init : array<string|int, mixed> = []
-
Optional initialization array.
- $container : ContainerInterface|null = null
-
Optional DI container.
Tags
Return values
static —Returns the current controller instance for method chaining.
initializeLoggable()
Initialize the loggable flag.
public
initializeLoggable([bool|array<string|int, mixed>|null $init = null ][, ContainerInterface|null $container = null ][, bool|array<string|int, mixed>|null $defaultValue = false ]) : static
Parameters
- $init : bool|array<string|int, mixed>|null = null
-
The definition to initialize the loggable property.
- $container : ContainerInterface|null = null
- $defaultValue : bool|array<string|int, mixed>|null = false
-
The default value if the $init argument is not defined.
Tags
Return values
staticinitializeLogger()
Initializes the logger reference for the current instance.
public
initializeLogger([array<string|int, mixed>|LoggerInterface|string|null $init = null ][, ContainerInterface|null $container = null ][, bool $useDefault = true ]) : static
This method accepts either:
- A LoggerInterface instance
- An associative array containing a logger reference under the static::LOGGER key
- A string representing a service ID or class name resolvable by the container
nullor an empty value, which will default to LoggerInterface::class depending on the$useDefaultparameter.
If a dependency injection container is provided, the method will attempt to
resolve the logger service from it. If no valid logger can be resolved, the
$this->logger property will be set to null.
Parameters
- $init : array<string|int, mixed>|LoggerInterface|string|null = null
-
Logger initialization data. May be an instance, an array with a logger entry, a string service ID/class name, or
null. - $container : ContainerInterface|null = null
-
Optional dependency injection container used to resolve the logger service.
- $useDefault : bool = true
-
Whether to use LoggerInterface::class as a fallback if
$initdoes not provide a valid logger string. Defaults totrue.
Tags
Return values
static —Returns the current instance for method chaining.
initializeMethod()
Initialize the internal method property.
public
initializeMethod([array<string|int, mixed> $init = [] ]) : $this
Parameters
- $init : array<string|int, mixed> = []
Return values
$thislog()
Logs with an arbitrary level.
public
log(mixed $level, string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Parameters
- $level : mixed
- $message : string|Stringable
- $context : array<string|int, mixed> = []
notice()
Normal but significant events.
public
notice(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
warning()
Exceptional occurrences that are not errors.
public
warning(string|Stringable $message[, array<string|int, mixed> $context = [] ]) : void
Example: Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong.
Parameters
- $message : string|Stringable
- $context : array<string|int, mixed> = []
registerRoute()
Implements the template method to register the route with the HTTP POST verb.
protected
registerRoute(callable $handler) : void
Parameters
- $handler : callable
-
The handler (e.g., [$controller, 'post'])