rareloop / wp-router
路由器
v1.0.1
2017-07-25 14:05 UTC
Requires
- php: ^7.0
- rareloop/router: ^1.0.0
Requires (Dev)
- brain/monkey: ^2.0.2
- mockery/mockery: ~0.9.9
- phpunit/phpunit: ~5.7
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-12 04:06:50 UTC
README
此包不再受支持。使用风险自负。我们建议使用底层的路由器:https://github.com/Rareloop/router
Rare WordPress Router
A WordPress wrapper around the Rareloop PHP Router. Easily handle custom endpoints on your WordPress site with this plugin.
安装
尽管不是必需的,但使用 Composer 和类似 Bedrock 的设置是推荐的安装方法。
composer require rareloop/wp-router
使用方法
创建路由
映射
创建路由是通过使用 map
函数完成的
use Rareloop\WordPress\Router\Router; // Creates a route that matches the uri `/posts/list` both GET // and POST requests. Router::map(['GET', 'POST'], 'posts/list', function () { return 'Hello World'; });
map()
接受 3 个参数
methods
(数组): 匹配请求方法的列表,有效值GET
POST
PUT
PATCH
DELETE
OPTIONS
uri
(字符串): 要匹配的 URIaction
(函数|string): 闭包或控制器字符串
路由参数
可以使用 {keyName}
语法在路由上定义参数。当匹配包含参数的路由时,将传递 RouteParams
对象的实例到动作。
Router::map(['GET'], 'posts/{id}', function(RouteParams $params) { return $params->id; });
命名路由
可以通过命名路由来生成其 URL 的程序化表示
Router::map(['GET'], 'posts/all', function () {})->name('posts.index'); $url = Router::url('posts.index');
如果路由需要参数,您可以传递一个关联数组作为第二个参数
Router::map(['GET'], 'posts/{id}', function () {})->name('posts.show'); $url = Router::url('posts.show', ['id' => 123]);
HTTP 动词快捷方式
通常您只需要为路由允许一个 HTTP 动词,对于这些情况,可以使用以下快捷方式
Router::get('test/route', function () {}); Router::post('test/route', function () {}); Router::put('test/route', function () {}); Router::patch('test/route', function () {}); Router::delete('test/route', function () {}); Router::options('test/route', function () {});
设置基本路径
路由器假定您正在从域的路由开始工作。如果不是这种情况,您可以设置基本路径
Router::setBasePath('base/path'); Router::map(['GET'], 'route/uri', function () {}); // `/base/path/route/uri`
控制器
如果您想使用一个类来将相关的路由动作分组在一起,可以将控制器字符串传递给 map()
而不是闭包。字符串的格式为 {类名}@{方法名}
。使用类名和完整命名空间非常重要。
示例
// TestController.php namespace \MyNamespace; class TestController { public function testMethod() { return 'Hello World'; } } // routes.php Router::map(['GET'], 'route/uri', '\MyNamespace\TestController@testMethod');
创建组
将类似的路由放在公共前缀后面是很常见的。这可以通过使用路由组来实现
Router::group('prefix', function ($group) { $group->map(['GET'], 'route1', function () {}); // `/prefix/route1` $group->map(['GET'], 'route2', function () {}); // `/prefix/route2§` });