facebook / hack-router-codegen
此包已被废弃且不再维护。未建议替代包。
关于此包的最新版本(v1.0.0rc5)没有可用的许可信息。
使用代码生成进行Hack的URI路由
v1.0.0rc5
2017-09-28 17:39 UTC
Requires
- facebook/definition-finder: ^1.3.0
- facebook/hack-codegen: ^2.2.0
- facebook/hack-router: ^1.0.0rc7
- fredemmott/type-assert: ^0.2.0 || ^1.0
Requires (Dev)
- 91carriage/phpunit-hhi: ^5.5
- phpunit/phpunit: ^5.5
README
使用来自hhvm/hack-router
的UriPattern
系统为控制器类进行代码生成
目前支持生成
- 请求路由映射表
- 为您的网站生成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 许可证。