正确使用花括号VS备用联用

时间:2016-03-14 作者:Larry Lawless

在我看过的大多数主题和WordPress核心中,我看到了endwhileendif.

WordPress使用这些而不是大括号来表示块语句有什么好的理由吗?

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

正如wordpress的许多事情一样,惯性与为什么事情以特定的方式进行有很大关系。早期的核心主题是使用这些结构编写的,后来的开发人员复制了它们,因为他们要么不知道更好的方法,要么认为有一些不明显的理由喜欢它们。

正如@Howdy\\u McGee所说,这只是一种风格偏好,但我会避免endif, endwhile 因为大括号是跨多种语言的标准块分隔符,因此通常更容易阅读,即使我们忽略了在通用编辑器中语法突出显示和块折叠的好处。

SO网友:Howdy_McGee

我能找到的最好的理由是将逻辑与结构或控制与标记分离。关于PHP Coding Standard for WordPress 表示:

应始终使用支架,即使不需要:

if ( condition ) {
    action0();
}

if ( condition ) {
    action1();
} elseif ( condition2 ) {
    action2a();
    action2b();
}

foreach ( $items as $item ) {
    process_item( $item );
}
请注意,要求使用大括号只意味着禁止使用单语句内联控制结构。您可以自由使用alternative syntax for control structures (例如if/endif、while/endwhile)-especially in your templates where PHP code is embedded within HTML, 例如:

<?php if ( have_posts() ) : ?>

    <div class="hfeed">

        <?php while ( have_posts() ) : the_post(); ?>

            <article id="post-<?php the_ID() ?>" class="<?php post_class() ?>">
                <!-- ... -->
            </article>

        <?php endwhile; ?>

    </div>

<?php endif; ?>
有些人可能会认为大括号更好,因为语法突出显示(即单击左括号,然后突出显示右括号),但这取决于偏好。替代语法不是必需的,但作为替代语法提供,因此您可以自由使用最清晰的语法。

就我个人而言,我在模板中使用alt语法(或者我计划在任何时候混合HTML和PHP),并使用适当的间距和缩进,因为我发现整体阅读起来更容易。