fredemmott/hack-error-suppressor

该软件包已被弃用,不再维护。未建议替代软件包。

抑制 HHVM 自动将类型检查器错误转换为致命错误。

v1.0.1 2017-05-02 03:07 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:04:53 UTC


README

本项目已不再活跃;HHVM 3.25 及更高版本不再需要。

Hack Error Suppressor 构建状态

除非将 hhvm.hack.lang.look_for_typechecker ini 设置为 false,否则 HHVM 默认会在加载任何 Hack 文件时尝试运行类型检查器,并引发可捕获的运行时致命错误。

这是一个 PHP 库,使您能够方便地临时禁用此行为。

何时使用此功能

当以下情况发生时,HHVM 的行为可能会有问题

  • HHVM 无法确定项目根目录的位置 - 例如,如果您尝试从 composer 插件运行 Hack 代码
  • 如果您的 Hack 代码需要操作不完整的项目 - 例如,如果您希望编写 Hack 代码来获取依赖项
  • 如果您的 Hack 代码需要操作已知有问题的项目 - 例如,在更新生成的代码时,在代码生成过程中,代码可能不一致

不应使用此功能的情况

如果以下情况之一为真,则可能不适用

  • 它在构建/安装或代码生成过程之外使用
  • 它在使用生成代码时使用
  • 它是在软件的正常使用期间而不是仅由开发人员调用时使用的
  • 它在 CLI 之外使用

类型检查器错误是代码中的真正问题,意味着事情确实出了问题;忽略强制执行只有在您期望代码在暂时损坏的代码库上运行并修复代码的情况下才是好主意。

安装

$ composer require fredemmott/hack-error-suppressor

使用方法

在加载任何 Hack 代码之前,您必须启用错误抑制。

您可以显式启用和禁用抑制

<?php
use FredEmmott\HackErrorSuppressor;

$it = new HackErrorSuppressor();
$it->enable();
call_some_hack_code();
$it->disable();

您还可以使用范围启用抑制

<?php

use FredEmmott\ScopedHackErrorSuppressor;

function do_unsafe_stuff() {
  $suppressor = new ScopedHackErrorSuppressor();
  call_some_hack_code(); // this works
}

do_unsafe_stuff();
call_some_hack_code(); // this fails, as we're out of scope

在 CLI 之外使用

默认情况下,不允许这样做;如果您绝对确定需要这样做(请记住,类型检查器错误是代码中的真正问题,而不仅仅是 lint),您可以禁用检查。

FredEmmott\HackErrorSuppressor::allowRealRequestsAgainstBrokenCode();