facebook/hack-router-codegen

此包已被废弃且不再维护。未建议替代包。
关于此包的最新版本(v1.0.0rc5)没有可用的许可信息。

使用代码生成进行Hack的URI路由

v1.0.0rc5 2017-09-28 17:39 UTC

README

Continuous Integration

使用来自hhvm/hack-routerUriPattern系统为控制器类进行代码生成

目前支持生成

  • 请求路由映射表
  • 为您的网站生成Hack请求路由类

目前,查看单元测试是学习如何使用它的最佳方式。

构建请求路由器

<?hh
use \Facebook\HackRouter\Codegen;

final class UpdateCodegen {
  public function main(): void {
    Codegen::forTree(
      __DIR__.'/../src/',
      shape(
        'controllerBase' => WebController::class,
        'router' => shape(
          'abstract' => false,
          'file' => __DIR__.'/../codegen/Router.php',
          'class' => 'Router',
        ),
      ),
    )->build;
  }
}

这将根据您控制器中的URI模式生成一个名为 'Router' 的类,并包含一个自动生成的路由映射表。

WebController 是您网站的根控制器,必须实现 Facebook\HackRouter\IncludeInUriMap,它反过来需要 Facebook\HackRouter\HasUriPattern - 例如

public static function getUriPattern(): UriPattern {
  return (new UriPattern())
    ->literal('/')
    ->string('MyString')
    ->literal('/')
    ->int('MyInt')
    ->literal('/')
    ->enum(MyEnum::class, 'MyEnum');
}

提交您的代码生成!

这不是常规建议,但对于Hack代码来说这是最佳方法,否则您将面临循环依赖

  • 如果存在对未定义类的引用,HHVM 不会执行 Hack 代码
  • 一旦您使用代码生成,您将引用代码生成类
  • ... 因此,如果您还没有,您无法构建它们

贡献

我们欢迎GitHub问题和拉取请求 - 请参阅CONTRIBUTING.md以获取详细信息。

许可

hack-router-codegen 使用 MIT 许可证。