laasti/route

League/route 的两步控制器路由。实例化您的控制器,执行一些操作,然后调用控制器方法。

v1.1.1 2016-04-14 14:49 UTC

This package is auto-updated.

Last update: 2024-09-20 23:28:55 UTC


README

PHP League Route 包的高级实现。为 Laasti/Stack 提供两步路由中间件。

不是直接映射到您的控制器,增加了一个中间步骤:使用路由对象来配置当前路由。这个中间步骤可以用于通过授权中间件检查用户是否有权访问路由。

使用来自 The PHP League 的优秀包:League/Route

安装

composer require laasti/route

用法

当前不支持闭包和函数作为路由,只支持对象。

与 Laasti\Stack 一起使用

   $container = new League\Container;
   $routes = new League\Route\RouteCollection($container);
   $container->add('Laasti\Route\DefineControllerMiddleware')->withArgument($routes);
   $routes->setStrategy(new Laasti\Route\ControllerDefinitionStrategy);
   $request = Symfony\Component\HttpFoundation\Request::create('/test');
   $routes->get('/test', 'MyController::display');
   $resolver = new Laasti\Stack\ContainerResolver($container);
   $stack = new Laasti\Stack\Stack($resolver);
   $stack->push('Laasti\Route\DefineControllerMiddleware');
   $stack->push('Laasti\Route\CallControllerMiddleware');

   $stack->execute($request);

不与 Laasti\Stack 一起使用

   $container = new League\Container;
   $routes = new League\Route\RouteCollection($container);
   $routes->setStrategy(new Laasti\Route\ControllerDefinitionStrategy);
   $request = Symfony\Component\HttpFoundation\Request::create('/test/George');
   $routes->get('/test/{name}', 'MyController::display');

   $definition = $routes->getDispatcher()->dispatch($request->getMethod(), $request->getPathInfo());

   //Pass the request or any arguments to the controller
   //Calls MyController->display($request);
   $request->attributes->add($definition->getArguments());
   echo $definition->callController($request);

   //Or, uses route attributes as arguments
   //Calls MyController->display($name);
   echo $definition->callController();

贡献

  1. 复制此项目!
  2. 创建您的功能分支: git checkout -b my-new-feature
  3. 提交您的更改: git commit -am '添加一些功能'
  4. 推送到分支: git push origin my-new-feature
  5. 提交 pull request :D

历史

查看 CHANGELOG.md 获取更多信息。

致谢

作者:Sonia Marquette (@nebulousGirl)

许可证

在 MIT 许可证下发布。请参阅 LICENSE.txt 文件。