自动加载黑客类型别名



有什么办法自动加载 Hack 类型别名吗?我将它们放在符合 PSR-4 的路径上的单独文件中,虽然我知道它们仅限 Hack 并且没有在 PSR-0 或 PSR-4 中正式提及,但我认为会发生以下情况之一:

  1. HHVM 会将类型别名扩展为其基本类型,或者
  2. spl_autoload会将类型视为类、函数或接口名称并执行脚本,解析别名。

但是,两者都没有发生。在运行时,由于与类型提示不兼容,方法调用失败,即:

可捕获的致命错误:传递给 {method_name} 的参数必须是给定的 {type_alias} {concrete_type} 的实例。

编辑:我应该提到我专门使用作曲家。我不确定这是否特定于作曲家。

是的,您可以在 HHVM 中自动加载类型。您需要使用类映射方法和HHautoload_set_paths函数。

有 hhvm-autoload 包,它增加了对将必要的映射生成到作曲家的支持。

我不相信这是不可能的。PHP 不会为自动加载注册类型提示。而且它不需要,因为实现类型提示的唯一方法是传递该类或子类,其构造将触发自动加载器调用。因此,解释器在检查类型提示时不可能不知道它。

这只是 Hack 中的一个问题,因为类型别名引入了这种可能性。为了与PHP保持一致,我希望上述两个解决方案中唯一可行的解决方案是HHVM在编译字节码时扩展类型别名。

相关内容

  • 没有找到相关文章

最新更新