1

我正在使用 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;
}
4

4 回答 4

4

这应该有效:

<?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>
';
于 2014-07-16T22:03:35.947 回答
1

您对 Hack 使用了错误的语法。即使是他们自己网站上的示例也暗示要使用普通的 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>';
于 2014-07-16T22:06:41.513 回答
0

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

于 2014-07-17T07:17:45.493 回答
-1

Hack 是否支持短标签?<?= ?>

那可能是你的问题。

于 2014-07-16T22:02:15.370 回答