加载中...

注解路由


注解路由

新版本提供了一种最简单的路由注册方法(可以完成基本的路由定义),默认关闭,如果需要开启在应用的app.php配置文件中设置:

  1. // 使用注解路由
  2. 'route_annotation' => true,

然后只需要直接在控制器类的方法注释中定义(通常称之为注解路由),例如:

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. /**
  6. * @param string $name 数据名称
  7. * @return mixed
  8. * @route('hello/:name')
  9. */
  10. public function hello($name)
  11. {
  12. return 'hello,'.$name;
  13. }
  14. }

请务必注意注释的规范,可以利用IDE生成规范的注释。

该方式定义的路由在调试模式下面实时生效,部署模式则需要使用 optimize::route 指令生成路由规则文件。

注意必须严格使用@route((区分大小写,route(之间不能有空格),建议路由定义写在注释最后一段,否则后面需要一个空行

然后就使用下面的URL地址访问:

  1. http://tp5.com/hello/thinkphp

页面输出

  1. hello,thinkphp

默认注册的路由规则是支持所有的请求,如果需要指定请求类型,可以在第二个参数中指定请求类型:

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. /**
  6. * @param string $name 数据名称
  7. * @return mixed
  8. * @route('hello/:name','get')
  9. */
  10. public function hello($name)
  11. {
  12. return 'hello,'.$name;
  13. }
  14. }

如果有路由参数和变量规则需要定义,可以直接在后面添加方法,例如:

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. /**
  6. * @param string $name 数据名称
  7. * @route('hello/:name','get')
  8. * ->https()
  9. * ->pattern(['name' => '\w+'])
  10. *
  11. * @return mixed
  12. */
  13. public function hello($name)
  14. {
  15. return 'hello,'.$name;
  16. }
  17. }

注意在添加路由参数和变量规则的最后不需要加;,并且确保和后面的其它注释之间间隔一个空行。

支持在类的注释里面定义资源路由,例如:

  1. <?php
  2. namespace app\index\controller;
  3. /**
  4. * @route('blog')
  5. */
  6. class Blog
  7. {
  8. public function index()
  9. {
  10. }
  11. public function read($id)
  12. {
  13. }
  14. public function edit($id)
  15. {
  16. }
  17. }

还没有评论.