fredemmott/hhvm-autoload

此包已被弃用且不再维护。作者建议使用 facebook/hhvm-autoload 包。
此包的最新版本(v1.3.0)没有可用的许可信息。

安装: 390

依赖关系: 1

建议者: 0

安全: 0

星级: 0

关注者: 0

分支: 18

语言:Hack

类型:composer-plugin

v1.3.0 2017-02-17 05:54 UTC

This package is auto-updated.

Last update: 2020-11-09 23:43:36 UTC


README

HHVM 上自动加载类、枚举、函数、typedef 和常量的 Composer 插件。

常见问题解答

我需要使用 Hack 吗?

不需要,PHP 就可以 - 但是需要 HHVM,因为

  • PHP 不支持自动加载类以外的任何内容
  • 此项目和解析器是用 Hack 编写的

如果我没有编写 Hack,我能自动加载函数和常量吗?

是的 :)

为什么此项目使用 Composer 的自动加载器?

它不能依赖于自己 :)

预览警告

自动加载机制在 Facebook 上经过了大量测试,但是用于查找自动加载项(类、函数等)的库相对较新,并且尚未在众多项目中使用。它已在以下环境中进行了测试:

如果您遇到解析错误,请将示例代码或无法解析的开源项目的链接提交给 hhvm/definition-finder 的问题。

对于任何其他问题,请将问题提交给 此项目 的问题。

用法

  1. 添加一个 hh_autoload.json 文件(见下文),可选地从 composer.json 中删除您的配置
  2. composer require facebook/hhvm-autoload
  3. 将任何对 vendor/autoload.php 的引用替换为 vendor/hh_autoload.php
  4. 如果您正在使用 PHPUnit,您需要将 vendor/hh_autoload.php 添加到您的 bootstrap.phpphpunit.xml 中的 bootstrap 文件(如果您还没有的话)。这是因为 PHPUnit 会自动加载 vendor/autoload.php,但不知道 vendor/hh_autoload.php
  5. 要重新生成映射,请运行 composer dump-autoload 或其他生成映射的命令

配置(hh_autoload.json

一个最小的配置文件如下

{
  "roots": [ "src/" ]
}

此工具将在src/目录中查找可自动加载的定义,并在vendor/目录中查找。它会关注vendor/目录内composer.json文件中的autoload部分。

以下设置是可选的

  • "extraFiles": ["file1.php"] - 应该不被自动加载,但应该由vendor/hh_autoload.php通过require()调用的文件。这应该比在Composer中使用时需要得少。
  • "includeVendor": false - 不要将vendor/目录中的定义包含在vendor/hh_autoload.php中。
  • "autoloadFilesBehavior": "scan"|"exec" - 是否对来自vendorfiles进行scan查找定义,或者由vendor/hh_autoload.php执行exec - 默认为scan,通常是首选的,但如果您有需要在启动时执行代码的依赖项,则需要使用exec。如果您的依赖项仅使用files,并且需要定义不是类的东西,这通常是这种情况,则scan就足够了。

工作原理

  • facebook/definition-finder提供了指定位置中所有PHP和Hack定义的列表
  • 这被用来生成类似于类映射的东西,但包括其他类型的定义
  • 该映射通过HH\autoload_set_paths()提供给HHVM

Composer插件API允许它在Composer自己重新生成vendor/autoload.php文件时自动重新生成vendor/hh_autoload.php文件。

贡献

我们欢迎GitHub问题和拉取请求 - 请参阅CONTRIBUTING.md以获取详细信息。

许可证

hhvm-autoload是BSD许可。我们还提供额外的专利许可