5

<<<EOD用来输出一些数据。我的问题是如何在<<<EOD语法中使用 php if 条件?我可以这样用吗

 <<<EOD
<h3>Caption</h3>
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
EOD;

从 HTML 上传 Azure 媒体服务

我有一个允许上传视频的 MVC4 站点。它作为 Azure 网站托管在 Azure 上。

因此,在将视频发送到 Azure 媒体服务进行转码/交付之前,我无权访问任何本地存储来缓存视频。

上传过程是直接发送到 WebApi 控制器的 HTML5 分块上传。为文件的每个上传块调用此控制器。

将整个上传的视频导入 AMS 进行转换的最佳选择是什么?

我认为将数据附加到 blob 是正确的方法。但是,我似乎找不到任何有关如何附加到现有 blob 的信息。另外,我担心如果处理程序中存在随机延迟导致数据损坏,这会导致并发问题。

4

5 回答 5

12

不,因为<<<块内的所有内容(称为“HEREDOC”)都是字符串。

如果您在问题中编写代码,您将编写一个包含 PHP 代码的字符串,这不是您想要的(我希望)。

在 HEREDOC 之外执行您的逻辑,并在其中使用普通变量:

if(isset($variablename)) {
   $outputVar = "...some text";
} else {
    $outputVar = "...some text";
}

print <<<EOD
<h3>Caption</h3>
{$outputVar}
EOD;
于 2013-05-09T16:17:34.133 回答
7

您只能在双引号字符串中使用表达式,而不是语句。

然而,在复杂的变量表达式中有一个解决方法。事先声明一个效用函数,并将其分配给一个变量。

$if = function($condition, $true, $false) { return $condition ? $true : $false; };

然后通过以下方式使用它:

echo <<<TEXT

   content

   {$if(isset($var), "yes", "no")}

TEXT;
于 2013-05-09T16:26:27.057 回答
2

不,但您可以使用变量替换

if(isset($variablename))
{
$var "...some text";
}
else
{
$var "...some text";
}
<<<EOD
<h3>Caption</h3>
$var
EOD;
于 2013-05-09T16:18:58.200 回答
1

不会。使用heredoc语法的插值与使用双引号时相同。您可以对变量或类方法进行简单的插值,仅此而已。

这段代码

$foo = 'bar';
<<<EOD
$foo
baz($foo);
EOD;

将输出

bar
baz(bar)
于 2013-05-09T16:18:36.937 回答
0
<<<EOD
<h3>Caption</h3>
EOD;
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
于 2013-05-09T16:17:29.170 回答