webcretaire / diggy-router
PHP 的简单路由组件
v1.5.0
2018-07-05 22:15 UTC
Requires
- php: >=7.0.0
- symfony/yaml: ^3.3
Requires (Dev)
- phpunit/phpunit: ^6.2
README
PHP 的简单路由组件
安装
目前唯一的安装方式是通过 composer
composer require webcretaire/diggy-router
基本用法
首先,您需要在具有以下结构的 YAML 文件中注册您想要使用的路由
routes: # First Route - uri: '/addressOfYourPage' controller: 'Name\Of\A\Class' action: 'nameOfTheFunctionToCall' # Second Route - uri: '/addressOfYourSecondPage' controller: 'Name\Of\A\Class' action: 'nameOfTheFunctionToCall' # ...
注意,“action”参数是可选的,如果没有提供,路由器将尝试调用不带参数的“render()”函数
然后创建一个新的路由器
$router = new DiggyRouter\Router()
将您的路由加载到路由器中
$router->loadRoutes("path/to/your/routing.yml");
使用路由器根据请求的 URI 调用正确控制器中的正确函数
$router->handleRequest();
高级用法
默认情况下,路由器会尝试查找与存储在 $_SERVER['REQUEST_URI']
中的请求 URI 匹配的路由,但您可以通过将 URI 传递给函数来指定要使用的 URI
$router->handleRequest($customURI);
DiggyRouter 现在支持一个路由多个 URI,您只需将您的路由的 uri
参数定义为数组即可
routes: - uri: - '/firstPage' - '/secondPage' controller: 'Name\Of\A\Class' action: 'nameOfTheFunctionToCall' # ...
如果您有复杂的 URI,您可以指定一个表达式,请求的 URI 必须匹配。默认分隔符是 '~',但您可以通过以下方式指定要使用哪个
$router->setDelimiter('YourDelimiter');
如果您有很多 URI,您可以将您的路由在主路由文件和任意数量的辅助文件之间进行拆分
# Main routing file includes: - 'secondRoutingFile' - 'thirdRoutingFile' routes: - uri: '/SomeAdditionnalRoutes' controller: 'Name\Of\A\Class' # ...
# Second routing file routes: - uri: '/RoutesEverywhere' controller: 'Name\Of\A\Class' # ...
示例
您可以在此路由文件中看到一个完整的示例