天天看点

《Hack与HHVM权威指南》——1.2.1 自动加载一切

类型检查器做出的一个关键假设就是,你的项目经过设置后,代码库中的任何类、函数或者常量都能够在你代码库的其他地方使用。不会尝试去分析任何include或者require语句,确保当前文件在使用时已经加载了其他文件。相反,它认为你已经完成了“自动加载”的相关设置。

这就简单地回避了两个问题,一是困难的静态分析的问题,另一个是现代的最佳实践的问题。“自动加载一切”的是被composer(流行的php和hack的包管理器)采取的方案。值得注意的是,自动加载并不是强制的,你可以在代码里面使用require或者include语句,关于这一点,类型检查器并不会产生问题。但是我们强烈建议你不要这么做,因为类型检查器不会保护你免受require或者include语句丢失问题的困扰。

php通过__autoload()和spl_autoload_register()提供类的自动加载功能,hhvm也支持这一点。hhvm提供了新的附加特性,就是可以自动加载php或者hack的函数和常量,还可以自动加载hack中的类型别名(参见3.2节的内容)。关于hhvm所特有的api,可以查看3.7节的内容。