Composer php 自动加载黑客类型别名

Composer php 自动加载黑客类型别名,composer-php,hhvm,spl-autoload-register,psr-4,hacklang,Composer Php,Hhvm,Spl Autoload Register,Psr 4,Hacklang,有没有办法自动加载黑客类型的别名?我将它们放在PSR-4兼容路径上的单独文件中,虽然我知道它们只是黑客攻击,在PSR-0或PSR-4中没有正式提及,但我认为会发生以下情况之一: HHVM会将类型别名扩展到它们的基类型,或者 spl\u autoload将类型视为类、函数或接口名称,并执行脚本,解析别名 然而,这两种情况都不会发生。在运行时,由于与类型提示不兼容,方法调用失败,即: 可捕获致命错误:传递给{method_name}的参数必须是给定的{type_alias}{concrete_typ

有没有办法自动加载黑客类型的别名?我将它们放在PSR-4兼容路径上的单独文件中,虽然我知道它们只是黑客攻击,在PSR-0或PSR-4中没有正式提及,但我认为会发生以下情况之一:

  • HHVM会将类型别名扩展到它们的基类型,或者
  • spl\u autoload
    将类型视为类、函数或接口名称,并执行脚本,解析别名
  • 然而,这两种情况都不会发生。在运行时,由于与类型提示不兼容,方法调用失败,即:

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


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

    我认为这是不可能的。PHP不会为自动加载注册类型提示。它不需要这样做,因为实现类型提示的唯一方法是传递该类或子类,其构造将触发autoloader调用。那么,在对类型提示进行检查时,解释程序不可能不知道类型提示


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

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

    有一个软件包,它增加了对在composer中生成必要映射的支持