php数组,foreach和if语句的最佳实践

时间:2016-10-25 01:47:04

标签: php coding-style

所以我现在只是学习最佳实践,每个人都有一个意见,我只想找到一个很好的编码方式而不是......那么糟糕?

我写了以下内容。它工作,没有错误输出,但我有一种感觉这是可怕的做法。这是一个Wordpress模板。

<?php
$config['social-links'] = [
  'facebook'   =>  'https://www.facebook.com/usernamehere',
  'instagram'  =>  'https://www.instagram.com/usernamehere/',
  'twitter'  =>  null,
  'youtube'  =>  null
];

并在模板中

<ul class="social-nav inline-blocks">
<?php
    global $config;
    $dir = get_template_directory_uri();
    foreach($config['social-links'] as $key => $value) if($value)
        echo "
            <li class='$key inlineBlock'>
                <a class='animate' target='_blank' href='$value'>
                    <span class='inner'>
                        <img class='injectSvg' data-src='$dir/images/social-icons/icon-$key.svg' alt='$key'>
                    </span>
                </a>
            </li>
        ";
    ?>
</ul><!--END Social-nav-->

我有一种感觉,因为我让他们打开这是可怕的?我知道下面的作品是正确的,但我不喜欢括号......

foreach($config['social-links'] as $key => $value) {
    if($value) {

    }
} 

我刚刚结束了以下......

<ul class="socialNav inlineBlocks">
<?php
    global $config;
    foreach($config['social-links'] as $key => $value) {
        if($value) {
            echo '
                <li class="'. $key .' inlineBlock">
                    <a class="animate" target="_blank" href="'. $value .'">
                        <span class="inner">
                            <img class="injectSvg" data-src="'. get_template_directory_uri() .'/images/social-icons/icon-'. $key .'.svg" alt="'. $key .'">
                        </span>
                    </a>
                </li>
            ';
        }
    } ?>
</ul><!--END SocialNav-->

1 个答案:

答案 0 :(得分:2)

这是一种可怕的做法。如果您无法访问模板引擎(即 Twig ),那么使用下面的速记/模板PHP就是您应该关注的路径:

<?php foreach($config['social-links'] as $key => $value): ?>
    <?php if($value): ?>
        <li class="<?php echo $key; ?>" inlineBlock">
             <a class="animate" target="_blank" href="<?php echo $value; ?>">
                <span class="inner">
                    <img class="injectSvg" data-src="<?php echo get_template_directory_uri() .'/images/social-icons/icon-'. $key; ?>.svg" alt="<?php echo $key; ?>">
                </span>
            </a>
        </li>
    <?php endif; ?>
<?php endforeach; ?>

这通常称为Alternative Syntax,是最佳选择。