将 PHP 运算符放入 HTML
首先,不要使用该echo
语句来吐出大量 HTML,这会使代码很难维护和重用。这不是更容易吗?
<a href='<?php echo $some_variable; ?>'>
在 HTML 块中使用 PHP 逻辑(一般)
你正在寻找这样的东西:
<?php if(!empty($image)): ?>
<img src='<?php echo $image; ?>' alt='Some Stuff'>
<?php endif; ?>
这是一种称为三元运算符的简写等价物,在代码中可能更容易阅读:
<?php echo empty($image) ? null : "<img src='$image' alt='Some Stuff'>"; ?>
如果有一个值,这将回显一个图像标签,如果$image
没有,则什么都没有。
让我们清理并修复原始帖子中的代码...
您的代码看起来像是被故意混淆以混淆人们。学会缩进,不要在逻辑中嵌入逻辑。优先考虑可读性,您的代码将更容易维护。
if(!empty($text))
echo
"<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\">
<img src=\"" .get_field($image)."\" alt=\"\" /> " .get_field($text)."
<a href=\"".get_field($download). "\"> Download File</a>
</$html>\n";
这里有很多可以改进的地方。首先,尽可能将业务逻辑与显示逻辑分开:
商业逻辑
<?php
// This should be in another FILE ideally...
$this->divClass = empty($this->options['class']) ? null : trim($thesis->api->esc($this->options['class']));
$this->image = the_field($image);
$this->download = the_field($download);
$this->text = // I dont know how you're setting this.
?>
显示逻辑
接下来,丢失get_field
函数,如果找不到,则添加null
返回,这样您的代码就会更清晰。the_field
然后,只需使用这样的东西:
<?php if(!isset($this->text)): ?>
<div class='<?php echo $divClass; ?>'>
<?php if(!isset($this->image) && !isset($this->download)): ?>
<img src='<?php echo $this->image; ?>'>
<a href='<?php echo $this->download; ?>'>Download File</a>
<?php endif; ?>
</div>
<?php endif; ?>
这些<?php>
标签可以帮助您,它们允许您以大多数语言不得不求助于丑陋的外部模板的方式将 PHP 代码干净地插入 HTML 代码。使用它们,保持代码可读性和可理解性,不要走捷径,因为它们会回来咬你。