Search code examples
composer-phphhvmspl-autoload-registerpsr-4hacklang

Autoloading Hack type aliases


Is there any way autoload Hack type aliases? I've placed them in separate files on PSR-4-compliant paths, and although I understand they are Hack-only and aren't formally mentioned in the PSR-0 or PSR-4, I figured one of the following would happen:

  1. HHVM would expand type aliases to their base types, or
  2. spl_autoload would treat the type as a class, function or interface name and execute the script, resolving the alias.

However, neither happen. At runtime, the methods call fail due to incompatibility with the type hints, i.e.:

Catchable fatal error: Argument passed to {method_name} must be an instance of {type_alias}, {concrete_type} given.

Edit: I should mention that I am specifically using Composer. I'm unsure if this is Composer-specific or not.


Solution

  • Yes, you can autoload types in HHVM. You need to be using a class-map approach and the HH\autoload_set_paths function.

    There is the hhvm-autoload package which adds support for generating the necessary map into composer.