. namespace core\router; /** * Class hook_callbacks * * @package core * @copyright 2024 Andrew Lyons * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class hook_callbacks { /** * Provide DI Configuration for the Router system. * * @param \core\hook\di_configuration $hook * @codeCoverageIgnore */ public static function provide_di_configuration( \core\hook\di_configuration $hook, ): void { $hook->add_definition( request_validator_interface::class, \DI\get(request_validator::class), ); $hook->add_definition( response_validator_interface::class, \DI\get(response_validator::class), ); $hook->add_definition( route_loader_interface::class, \DI\get(route_loader::class), ); // Until Moodle 6.0 we will allow the router to be unconfigured for backwards compatibility. // To support legacy shims like /course/tags.php we need a custom route resolver which tries both. // The following definition can be removed in Moodle 6.0. // - \Slim\Interfaces\RouteResolverInterface // - \Slim\Interfaces\RouteCollectorInterface // - \Psr\Http\Message\ResponseFactoryInterface // Along with the route_resolver class itself. // TODO MDL-87637 Remove in Moodle 6.0. $hook->add_definition( \Slim\Interfaces\RouteResolverInterface::class, \DI\get(route_resolver::class), ); $hook->add_definition( \Slim\Interfaces\RouteCollectorInterface::class, \DI\get(\Slim\Routing\RouteCollector::class), ); $hook->add_definition( \Psr\Http\Message\ResponseFactoryInterface::class, \DI\factory([\Slim\Factory\AppFactory::class, 'determineResponseFactory']), ); } }