movisio / lazy-router
Nette RouteList,具有通过前缀按需加载路由的功能
v0.11
2022-08-24 08:33 UTC
Requires
- php: ^7.4|^8.0
- nette/application: ^3
- nette/caching: ^3
Conflicts
- movisio/nais-core: <2.0
README
Nette RouteList,具有按需加载路由的功能。
特别适用于拥有许多(数百个?)路由的情况,这可能会减慢您的系统,并且您不需要在每个请求中加载所有这些路由。
例如,当您的应用程序有更多独立的模块,并且每个模块都有自己的路由时,它们可以被分离并按模块进行懒加载。
请注意,此路由器是专门为数百个静态路由的大型API创建的,不应用于常规路由 <module>/<presenter>/<action>
。
用法
默认情况下,LazyRouteList 的行为与普通 RouteList 完全一样。对于懒加载功能,请使用 setLazyCachedRoutes
方法。它只有一个参数:用于将路由加载到缓存的回调函数。回调函数的返回值应该是路由器的数组。该函数还接受参数 $dependencies,就像 nette Cache::load 回调一样。
$router = new LazyRouteList($cache); $router->setLazyCachedRoutes(function (&$dependencies) : array { // .... read routes from files or whatever ... $routes = [ new \Nette\Routing\Route('/api/v1/route/to/resource', 'Module:ApiPresenter:action') ]; // optional cache dependency for automatic cache invalidation and routes reloading $dependencies[\Nette\Caching\Cache::FILES] = ['path/to/file', 'path/to/another/file']; return $routes; });
路由将根据路径的静态部分(不带参数)以及演示者进行分组,并将被缓存。
在匹配时,路由器将只加载具有匹配静态路径部分的路线。
在创建链接时,只从缓存中加载与目标演示者匹配的路由。