问题标签 [hacklang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
231 浏览

php - HHVM Hack 源代码到普通 PHP

我在 Google 和 SO 上进行了搜索。在任何地方都找不到这个问题或答案。所以这里。

我想开始在工作中使用 Hack,至少对于一些小项目。我们的服务器现在还没有安装 HHVM,需要做一些工作才能完成。因此,我想知道是否可以在本地编写和使用 Hack,然后将 Hack 源文件“编译”/“转换”为纯 PHP。然后可以将纯 PHP 源代码原样部署到我们当前的平台上。

我知道,边缘情况,不是长期的,但无论如何我对这种可能性感到好奇

编辑 似乎有足够多的人问这种问题,因为 Facebook 发布了一个从 Hack 到 PHP的转换器。我还没有尝试过,但我想我会在这里提到它。

0 投票
1 回答
508 浏览

static-typing - 为什么 Hack 中不允许通用实例化语法?

文档

注意:HHVM 允许使用诸如之类$x = Vector<int>{5,10};的语法,但 Hack 在这种情况下不允许使用这种语法,而是选择推断它。

这有什么具体原因吗?这不是违反快速失败规则吗?

在某些情况下,这会导致错误被延迟,进而导致更难的回溯。

例如:

上面的代码在实际存在静态类型集合的上下文中使用之前不会导致错误:

现在,如果向量包含其他内容,则会出现错误int。但是必须将错误追溯到实际导入有缺陷的数据的那一点。如果可以首先使用通用语法来实例化向量,那么这将不是必需的:

0 投票
1 回答
353 浏览

hhvm - 使用 HHVM 将 EnableHipHopSyntax 设置为 True

当我运行我的代码时,我收到以下错误:

myfile.php 在该行有一个函数:

底线): string"是 hack 语言的适当语法,但出于某种原因,HHVM 决定在默认情况下巧妙地禁用自己的语法。

我似乎找不到任何带有 HHVM 的文档来说明如何设置该配置文件。如何进行这一过程?

编辑:

事实证明,我的 HHVM 转换工具并没有<?php按照<?hh我的指示进行转换,因为它已经转换了自己。换句话说,它试图转换<?hh<?hh,这对我没有好处。

我错误地认为 HHVM 正在为<?hh标签禁用它,但事实并非如此。

0 投票
1 回答
602 浏览

hhvm - 在 ubuntu14.04 上使用 ngnix 配置简单 hhvm 站点(hack-site-example)的问题

我按照https://github.com/hhvm/hack-example-site上的说明进行操作,但在通过 ubunut 14.04 在 ngnix 上设置 hhvm hack 站点时不知何故迷路了。请注意,我为 14.04 使用了适当的 apt-get repo。

但是,在配置并尝试访问 127.0.0.1:9000 后,我在 /var/log/hhvm/error.log 中看到一个错误

我的 /etc/ngnix/sites-enabled 如下

/etc/ngnix/sites-available/hack-example-site 的内容如下:

有人可以帮助我在我的本地主机上运行这个 hhvm 站点吗?谢谢。

哦,请注意 ngnix 已正确安装并且服务器响应 localhost。

配置文件 /etc/nginx/sites-available/hack-example-site 如下:

网站/index.php

$document_root$fastcgi_script_name;

} } ~

0 投票
2 回答
5076 浏览

hhvm - hacklang 中的形状

我今天开始学习 hacklang,现在我有点卡在形状上:http: //docs.hhvm.com/manual/en/hack.shapes.php

我理解形状的概念,它对我来说似乎真的很有用,但我不明白为什么这个代码不会抛出任何错误:

'y' 键被定义为整数,但是当我传递一个字符串时,没有显示错误。谢谢你的帮助 :)

0 投票
1 回答
1584 浏览

php - Hack / HHVM 与 PHP / HHVM 之间的性能差异

我最近通过在 Apache / NGinx / HHVM / ReactPHP 的各种组合上运行两个测试 PHP 脚本来分析它们的性能差异。

我现在的问题是,在 HHVM 上执行的 PHP 脚本和在 Hack 中实现的(并在 HHVM 上执行的)(尽可能)相同的脚本之间是否存在预期的性能差异?

有没有人试过这个?

0 投票
1 回答
435 浏览

nginx - 尽管已经进行了必要的包含,但在将 XHP 与 HHVM 一起使用时获取未定义的类

我正在使用 nginx 1.6.2、ubuntu 14.04 和 hhvm 3.3.0。

我的服务器是在本地配置的,我可以访问它的页面并执行常规的 hack 脚本。

当我尝试执行必须包含 XHP 库的脚本时,问题就出现了。如果我从命令行调用 then 它们工作得很好:hhvm index.php使用预期的输出执行,但是如果我尝试从浏览器打开页面,hhvm 会记录 xhp 未定义的类错误。

这是我的设置:

这是 index.php 文件:

这是 info.php 文件:

其他文件取自:https ://github.com/facebook/xhp/tree/hack/php-lib

如果我在 init.php 的开头放置了一个 error_log,如果从 bash 执行它会输出错误,但如果从浏览器运行则不会输出任何内容(未定义的类错误除外)。

Nginx 也没有给我任何错误。

如果我从浏览器访问 info.php,它会给我预期的输出:“使用 HHVM”

谢谢你。

0 投票
1 回答
15106 浏览

php - 在 HHVM 上用 Hack 编写的代码是否比用 PHP 编写的代码更快?

我们可以期望通过在 HHVM 上从 PHP 过渡到 Hack 来提高速度吗?

我正在考虑强类型参数/返回类型,特别是标量,是否允许 HHVM 在将代码编译为本机代码方面做得更好,或者与使用经典 PHP 及其混合类型相比,速度增益微不足道?

0 投票
3 回答
374 浏览

php - 破解类型检查器无法识别函数内的“全局”关键字

我正在使用 HHVM 编写系统工具,但我一生都无法弄清楚为什么此代码在运行时会发出错误hh_client

当我运行时,这会出现以下问题hh_client

它指向的那条线是那条线

这是在global范围内声明的。这似乎是一个语法错误,好像globalHHVM 不支持该关键字,但是我检查了文档,它有几个在 Hack 代码中使用的示例。

0 投票
1 回答
1844 浏览

php - Php 在 Hack 中使用反射获取泛型类型

我正在使用 HHVM 探索 Hack,并且正在使用泛型。我有以下基本存储库:

然后我有子类 UserRepository 像这样:

我想要做的是在运行时使用反射来获取 T 的类型。

我尝试了以下方法:

输出以下内容:

}

然后我遍历参数并调用: $parameter->getClass()

返回null。

是否可以使用反射在运行时获取 T 的类型?如果是这样,我会怎么做?