middag_helper
final class middag_helper
Middag Helper.
Centralizes Middag framework entry operations (kernel, routing, env, URL helpers). This class exists to:
- keep the public entrypoint (local_middag\middag) minimal
- reduce cross-layer coupling to the entrypoint
- provide a single internal place for bootstrapping and URL helpers
Constants
| COMPONENT_NAME |
Component name used for cache definitions, logs, and file storage. |
| DOCS_URL |
External resource URL: documentation site. |
| SITE_URL |
External resource URL: main company website. |
| SUPPORT_URL |
External resource URL: support portal. |
| MIDDAGPLUGINS_OVERVIEW_URL |
External resource URL: plugins overview on docs. |
Methods
Return the singleton instance used by the DI container.
Initialize the application kernel.
Shutdown the kernel.
Handle the current HTTP request and dispatch it to the appropriate controller.
Retrieve a service from the DI container.
Access the Route Manager directly.
Generate a Moodle URL from a Symfony route name and parameters.
Generate a webhook URL (helper for callbacks).
Register a new route manually.
Register routes from PHP 8 Attributes (#[Route]) in a class.
Dispatch an event or signal through the framework's event dispatcher.
Register a synchronous MIDDAG filter hook.
Apply synchronous MIDDAG filter hooks.
Register a synchronous MIDDAG action hook.
Execute synchronous MIDDAG action hooks.
Get the component name.
Get the documentation URL.
Get the main site URL.
Get the support portal URL.
Get the Middag Plugins overview URL.
Check if running in PHPUnit test environment.
Check if running in development environment.
Check if running in production environment.
Details
at line 74
static middag_helper
get_instance()
Return the singleton instance used by the DI container.
at line 87
static void
init()
Initialize the application kernel.
Idempotent: safe to call multiple times.
at line 97
static void
shutdown()
Shutdown the kernel.
Useful for testing isolation.
at line 110
static void
handle()
Handle the current HTTP request and dispatch it to the appropriate controller.
In practice, this delegates to the router/controller pipeline inside the kernel. Typical call site: entrypoints (index.php, webhook.php, etc.).
at line 127
static object
get(string $id)
Retrieve a service from the DI container.
This is the primary escape hatch for the outside world to interact with your DI-managed services without coupling to the container directly.
at line 143
static router_interface
routing()
Access the Route Manager directly.
Exposes the router to allow:
- manual route registration
- attribute/annotation scanning (before compilation)
- URL generation through router abstraction
at line 160
static moodle_url
url_generator(string $route, array $parameters = [], int $reference_type = UrlGeneratorInterface::ABSOLUTE_PATH)
Generate a Moodle URL from a Symfony route name and parameters.
This method bridges your Symfony-style routing (route name + params) to Moodle's moodle_url, keeping the rest of your codebase free from direct moodle_url construction logic.
at line 185
static moodle_url
webhook_url_generator(string $route, array $parameters = [], int $reference_type = UrlGeneratorInterface::ABSOLUTE_PATH)
Generate a webhook URL (helper for callbacks).
This is a specialized helper that:
- generates the base route URL (usually pointing to index.php)
- rewrites it to point to webhook.php
- returns a moodle_url for consistent handling inside Moodle
at line 209
static void
register_route(string $name, string $path, string $controller_class, string $method, array $requirements = [])
Register a new route manually.
This is useful when you want to define routes procedurally (e.g. in bootstrap), instead of attribute scanning.
at line 233
static void
register_routes_from_annotations(string $class_name)
Register routes from PHP 8 Attributes (#[Route]) in a class.
Note: This must be called BEFORE the container is compiled (usually in bootstrap.php).
Why the container constraint matters:
- In "build" time, ContainerBuilder is mutable, so services/routes can be added.
- After compilation, the container becomes immutable for performance.
at line 261
static object
dispatch(object $event)
Dispatch an event or signal through the framework's event dispatcher.
at line 269
static void
add_filter(string $tag, callable $callback, int $priority = 10, int $args = 1)
Register a synchronous MIDDAG filter hook.
at line 277
static mixed
apply_filters(string $tag, mixed $value, mixed ...$args)
Apply synchronous MIDDAG filter hooks.
at line 285
static void
add_action(string $tag, callable $callback, int $priority = 10, int $args = 1)
Register a synchronous MIDDAG action hook.
at line 293
static void
do_action(string $tag, mixed ...$args)
Execute synchronous MIDDAG action hooks.
at line 303
static string
get_component_name()
Get the component name.
at line 313
static string
get_docs_url()
Get the documentation URL.
at line 323
static string
get_site_url()
Get the main site URL.
at line 333
static string
get_support_url()
Get the support portal URL.
at line 343
static string
get_middagplugins_overview_url()
Get the Middag Plugins overview URL.
at line 353
static bool
is_testing()
Check if running in PHPUnit test environment.
at line 363
static bool
is_development()
Check if running in development environment.
at line 373
static bool
is_production()
Check if running in production environment.