【问题标题】:Simple code - not outputting message简单的代码 - 不输出消息
【发布时间】:2014-07-16 21:56:45
【问题描述】:

我正在使用 Hack,可以在 hacklang.org 找到。

为什么下面的代码没有:

<?hh
    $message = "Hey, lol.";
?>
<!doctype html>
<html lang="en-us">
    <head>
        <title>title</title>
    </head>
    <body>
        <?= $message ?>
    </body>
</html>

输出以下文字?

Hey, lol.


error.log 文件中没有错误。当我“查看源代码”时,它是空白的,就像页面本身一样。

编辑:

伙计们,请查看下面的代码以响应您的答案。如果您访问 hacklang.org(请参阅此问题中的 hack 标记 :) 并查看主页上的教程部分,点击进入练习 3 of.. 它清楚地表明您应该使用 hh 而不是 php 来定义 hack 文档:

<?hh

// Hack functions are annotated with types.
function my_negation(bool $x): bool {
  return !$x;
}

【问题讨论】:

  • 你应该使用
  • Hack 网站本身说你可以使用 hh 代替 php,我昨晚使用的 3 个教程也是如此。
  • 与 PHP 不同,Hack 和 HTML 代码不能混用。
  • 但他们没有解释这实际上意味着什么。那么我们到底应该如何输出该死的值呢?
  • 我认为一种方法是使用 XHP 嵌入 XHTML。

标签: php linux nginx hhvm hacklang


【解决方案1】:

这应该可行:

<?php
    $message = "Hey, lol.";
?>
<!doctype html>
<html lang="en-us">
    <head>
        <title>title</title>
    </head>
    <body>
        <? echo $message; ?>
    </body>
</html>

编辑: Hack 不能像上面那样与 html 混合使用。 试试这个:

<?hh
    $message = "Hey, lol.";
    echo '
<!doctype html>
<html lang="en-us">
    <head>
        <title>title</title>
    </head>
    <body>
        ' . $message . '
    </body>
</html>
';

【讨论】:

  • 我更新了我的问题以回应“使用 ”而只使用“= $message ?>”是否有官方文档可以真正解决语言的基础知识?因为他们在手册中的代码不起作用。
  • 这是什么他妈的* ^hit?啊,f * ck,我没有使用Hack。那只是肮脏。我不能写那样的代码——太可怕了!感谢您的回答和帮助,@gdahl。
  • 虽然后一个示例是您可以使用 Hack 输出 HTML 的方式,但它远非推荐的方式。 XHP 是我们在 Facebook 的首选方法;这也是食谱示例的内容:cookbook.hacklang.org。如果您不想使用 XHP,我听说人们使用 Twig 等模板引擎非常幸运。
【解决方案2】:

您使用了错误的 Hack 语法。甚至their own website 上的示例也暗示要使用普通的 php 构造来完成您尝试做的事情。你的代码应该是:

<?php
    $message = "Hey, lol.";
?>
<!doctype html>
<html lang="en-us">
    <head>
        <title>title</title>
    </head>
    <body>
        <?php echo $message; ?>
    </body>
</html>

编辑:看起来 Hacklang 可能需要一种单独的方式来生成结果。请尝试以下操作:

<?hh 
    $message = "Hey, lol.";
    echo '
        <!doctype html>
        <html lang=\"en-us\">
            <head>
                <title>title</title>
            </head>
            <body>
                ' . $message . '
            </body>
        </html>';

【讨论】:

  • 注意:在这个线程中的成员之间似乎有些混淆(显然是谁对我投了反对票)。 Hack 与 PHP 集成。 php 标签在这里是可以接受的,并且似乎是我在互联网上找到的标准。但是,理想情况下如果他将&lt;?php 替换为&lt;?hh,代码应该可以正常工作。 @Aeron,而 stackoverflow.com/questions/200640/… 了解原因。
  • 我没有对你投反对票,但我开始后悔选择试用 Hack。到目前为止,感觉就像我什么都没做,只是hack 将它们全部组合在一起以使某些东西发挥作用。但它仍然无法正常工作 - 即使我使用 php 的东西。
  • 我不是它的忠实拥护者,如果您在该范围内进行开发,我建议您暂时坚持使用纯 php。你是什​​么意思它不起作用?
  • 他们自己的网站 www.hacklang.org 上的示例(参见主页教程部分的练习 3)告诉您使用
  • 嗯,他们在网上有一些混合文档。我的例子是一个标准的 PHP 文档。看起来 Hack 需要一些特殊信息。将编辑答案。
【解决方案3】:

在 hack 中使用 XHP 可能会更好。示例见此处:https://github.com/hhvm/hack-example-site/blob/master/HomeController.php

【讨论】:

  • 不,一切都很好,但感谢您的回答,我很感激。我已经决定试一试。
【解决方案4】:

Hack 是否支持短标签? &lt;?= ?&gt;

这可能是你的问题。

【讨论】:

  • 感谢 gdahl 我现在会调查一下。几分钟前,有人告诉我在另一个对话中以这种方式使用它
  • 真的,把&lt;?=换成&lt;?hh echo
  • @HorsSujet 他使用的是 Hack,而不是 PHP。
  • 这不是hack,它是第二种语法。
猜你喜欢
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
相关资源
最近更新 更多