PHP 格式字符串 EOD


php formatting string EOD

我得到了代码

$confirm = "if (!confirm('".Module::t("Approve") . "?')) return false;";
$js_approve =<<< EOD
function() {
    $confirm
    var url = $(this).attr('href');
    $.post(url, function(response) {
        alert(response);
    });
    return false;
}
EOD;

是否可以转换为这样的代码

    $js_approve =<<< EOD
    function() {
        "if (!confirm('".Module::t("Approve") . "?')) return false;";
        var url = $(this).attr('href');
        $.post(url, function(response) {
            alert(response);
        });
        return false;
    }
    EOD;

有什么想法吗?

除了你不能缩进,你也不能写这一行

"if (!confirm('".Module::t("Approve") . "?')) return false;";

在赫雷多克内部。

不,不是。您不能对 heredoc 字符串使用缩进。

您应该阅读此页面上的警告:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

为了防止 PHP 解析文本,请使用 nowdoc 语法(从 PHP 5.3.0 开始)

从 PHP 文档中的这一部分:

请务必注意,带有结束标识符的行不得包含其他字符,但可能的分号 (;)除外。这尤其意味着标识符不能缩进,分号前后不能有任何空格或制表符。还必须认识到,结束标识符之前的第一个字符必须是本地操作系统定义的换行符。这在 UNIX 系统(包括 Mac OS X)上是 '。结束分隔符(可能后跟分号)也必须后跟换行符。

它说标识符不能缩进。我喜欢保持我的缩进干净,你可以像往常一样继续,但你唯一需要注意的是,结束EOD;在该行之前没有其他字符(即,它必须有一个前面的换行符)。除此之外,一切都会按照您期望的方式进行。

以您的代码为例:

   $js批准 =<<

会正常工作