0

对于 Magento 设计文件,似乎非常倾向于使用替代 php 语法(下面的示例)。有哪些技术优势?或者,如果它只是一种风格偏好,那么技术上的吸引力是什么?

<div class="page-title title-buttons">
    <h1><?php echo $this->__('Shopping Cart') ?></h1>
    <?php if(!$this->hasError()): ?>
    <ul class="checkout-types">
    <?php foreach ($this->getMethods('top_methods') as $method): ?>
        <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
        <li><?php echo $methodHtml; ?></li>
        <?php endif; ?>
    <?php endforeach; ?>
    </ul>
    <?php endif; ?>
</div>
4

4 回答 4

2

没有“优势”或“劣势”。它归结为偏好和可维护性。

记住 => 你真的应该分离 PHP 和 HTML 语法。将您的 PHP 和 HTML 保存在单独的文件中 - 这是为了可维护性和许多其他原因(如果您搜索,那里有很多信息)。没有办法完全分开这两件事......你总是需要将 PHP 变量插入 HTML 和其他东西,但这应该保持在最低限度。

因此,我更喜欢在 Wordpress、Codeigniter 和其他东西的模板文件中使用这种替代语法,因为我看到它的方式是在模板文件中将 PHP插入HTML,所以让这些 PHP 块保持孤立。

即对我来说:

<?php

if(something){
    // this is a block of PHP
    // if you want to output html in here 
    // it seems right to do
    echo "<div>Here is some HTML</div>";
}

?>

反之亦然:

<div>
    <!-- this is a template file and is written in html -->
    Hello <?=$username?> <!-- inserting PHP into HTML -->
    <?php if(something): ?> <!-- keep it insular - in its own separate blocks, don't mix the two -->
        <button>A button</button>
    <?php endif; ?>
</div>

同样,没有“技术优势”,它只是更清洁更好(IMO)。这将 PHP 和 HTML 混合得太多了:

<div><!-- straight html -->

    <?php
        if(something){
            echo "<button>A Button</button>"; <!-- html output via php -->
        }
    ?>

</div>

这简直太可怕了

<div>

    <?php
        if(something){
            ?>
                <button>A Button</button>
                <!-- make your mind up! -->
            <?php
        }
    ?>

</div>
于 2012-08-31T13:24:17.973 回答
0

简而言之,它看起来更干净,您可以看到每个右大括号对应的内容(ish)。您仍然可以使用<?php if(foo) { ?>and <?php } ?>,但它看起来不那么干净。

于 2012-08-31T13:24:07.170 回答
0

优点实际上只是代码(特别是 HTML)在您的代码编辑器中变得清晰且语法突出显示,这可以帮助您发现拼写错误/错误等。它也更干净,因为您不会到处都有花括号,并且代码都可以很好地缩进。

否则,它将全部作为 PHP 字符串出现,并且您的编辑器不会对其应用任何样式。

于 2012-08-31T13:25:21.600 回答
0

magento 团队可以这样做的原因有很多。

如果您喜欢自动格式化以使其更具可读性,您的 IDE 将更容易缩进。您还可以使用您想要的任何引号编写纯 html,而不必尝试将其放在“..”中。

我不确定您在以另一种方式执行此操作时收到的打击。我会尽力为你解决这个问题,但如果有的话,它不会太多。

于 2012-08-31T13:26:41.053 回答