rossriley / stack-aura-router
将路由添加到请求对象的堆栈中间件
1.0
2016-03-31 10:32 UTC
Requires
- php: >=5.4.0
- aura/router: ^2.3
- symfony/http-foundation: ^2.4
- symfony/http-kernel: ^2.4
This package is not auto-updated.
Last update: 2024-09-14 15:00:49 UTC
README
使用的技术
您需要使用 Stack PHP 来构建您的应用程序
安装
最好通过 composer 完成,您只需要将此添加到(或忽略任何已存在的包)composer.json 文件中的 require 块中
require: {
....
"aura/router": "~2.0@dev" ,
"rossriley/stack-aura-router": "1.0.*@dev",
"stack/builder" : "dev-master",
"stack/url-map" : "dev-master",
"stack/run" : "dev-master",
....
}
工作原理
此项目基于一个非常简单的概念。使用 Aura Router,这是一个非常优秀的解耦路由包,您可以使用它定义路由并将数据添加到 HTTP 请求对象中。
以下是一个启动应用程序的示例
首先配置您的路由
#routes.php
<?php
use Aura\Router\RouterFactory;
$router_factory = new RouterFactory;
$router = $router_factory->newInstance();
$router->setValues(['controller' => 'YourNamespace\Controller\Main']);
$router->add("homepage", '/'')->addValues(["action"=>"index"]);
$router->add("signup", '/signup')->addValues(["action"=>"signup"]);
......
然后启动您的应用程序
#public/index.php
$router = include(__DIR__."/../config/routes.php");
$app = new YourNamespace\Application;
$app = (new Stack\Builder())
->push('Stack\Session')
->push('Stack\Aura\RequestRouter', $router)
->resolve($app);
Stack\run($app);
如何使用编译后的路由。
由于您的 Stack 应用程序处理 HttpKernelInterface $request
实例,您可以直接从请求中获取路由详情
$route = $request->attributes->get("route");
// This outputs with a request to /
Array (
[controller] => YourNamespace\Controller\Main
[action] => index
[_name] => homepage
[_route] => /
)
如您所见,此输出与您在 routes.php
文件中描述的路由相匹配。
同样,注册路由将输出以下内容
$route = $request->attributes->get("route");
// This outputs with a request to /signup
Array (
[controller] => YourNamespace\Controller\Main
[action] => signup
[_name] => signup
[_route] => /signup
)
欢迎贡献
这是一个相对较新的项目,处于早期 alpha 阶段,尽管它已被几个相当大的项目在野外使用。欢迎提交拉取请求/改进建议。