slaxweb / router
SlaxWeb/Framework 的路由组件
0.6.0
2017-04-25 19:07 UTC
Requires
- php: >=7.0.0
- slaxweb/config: ~0.3
- slaxweb/getset: ~0.1
- slaxweb/hooks: ~0.6
- slaxweb/logger: ~0.5
- symfony/http-foundation: ~3.0
Requires (Dev)
- behat/gherkin: ~4.4
- codeception/codeception: ~2.2
- codeception/specify: *
- phpunit/phpunit: ~5.4
Suggests
- pimple/pimple: Make use of available providers for Pimple version 3.0.x
This package is not auto-updated.
Last update: 2024-09-14 16:08:29 UTC
README
路由组件是 SlaxWeb/Framework 的核心组件之一,但也可以单独使用。它依赖于以下组件
路由可以帮助您将传入的请求路由到正确的代码,是现代网络应用中必不可少的组件,特别是那些依赖于单个入口点的应用。使用路由,您控制着您的传入请求如何被处理。
安装
目前只能通过 composer 安装,您需要在 composer.json 文件中添加以下内容
"require": { "slaxweb/router": "0.4.*@dev" }, "minimum-stability": "dev"
使用方法
路由的初始化可能有点复杂,尤其是因为它依赖于另外两个需要单独初始化的组件。因此,路由提供了两种方便的初始化方法,一个工厂和一个服务提供者,如果您使用的是 Pimple 依赖注入容器。
这只是为了让您入门。完整文档将在未来提供。
工厂
工厂提供了静态方法来正确初始化路由,并帮助您将路由定义传递给路由器。此示例未展示如何准备配置组件,该组件是日志记录器组件所必需的。有关此信息,请参阅配置和日志记录器组件。
<?php use SlaxWeb\Router\Route; use SlaxWeb\Router\Factory; use SlaxWeb\Router\Request; use SlaxWeb\Config\Factory as Config; use Symfony\Component\HttpFoundation\Response; require_once "vendor/autoload.php"; $config = Config::init(); // load config, refer to Config component README // define a route $route = Factory::newRoute()->set( "myUrl", Route::METHOD_GET, function (Request $request, Response $response) { // ... $response->setContent("my content"); } ); Factory::container($config)->add($route); // dispatch the request $response = Factory::response(); Factory::dispatcher($config)->dispatch(Factory::request(), $response); // and send response to browser $response->send()
现在,如果您在浏览器中访问 http://yourdomain.com/script.php/myUrl,您应该看到浏览器中的 'my content'。
服务提供者
使用服务提供者与工厂类似,并且可以稍微简化您的操作。
<?php require_once "vendor/autoload.php"; // init the Pimple Container $container = new Pimple\Container; // register services $container->register(new SlaxWeb\Config\Service\Provider); $container->register(new SlaxWeb\Logger\Service\Provider); $container->register(new SlaxWeb\Hooks\Service\Provider); $container->register(new SlaxWeb\Router\Service\Provider); // load config, refer to Config component README // defina a route $route = $container["router.newRoute"]->set( "myUrl", Route::METHOD_GET, function (Request $request, Response $response) { // ... $response->setContent("my content"); } ); $container["routesContainer.service"]->add($route); // dispatch the request $container["routeDispatcher.service"]->dispatch( $container["request.service"], $container["response.service"] ); // and send response to browser $container["response.service"]->send();
再次访问 http://yourdomain.com/script.php/myUrl,您应该再次在浏览器中看到 'my content'。