0

それがパフォーマンスに「大きな」影響を与えるとは思えませんが、代わりにPHP変数を使用してHTMLを吐き出すよりも、PHPループの方が最適化されているのではないかと思いました。

非常に単純な例は次のようになります。

これは「より効率的」です。

<?php
$i = 0;
$settings = array(
    1   => 'var_a|var_one',
    2   => 'var_b|var_two',
    3   => 'var_c|var_two',
    4   => 'var_d|var_three',
);
foreach($settings as $setting) {
    $e = explode('|', $setting);
    if(get_option($e[0]) !== ''){ ?>
        <li class="radio">
            <h2><?php print($e[1]); ?></h2>
            <input name="radio_ask" type="radio" value="<?php print($e[0]); ?>" id="radio_<?php print($i); ?>" tabindex="<?php print($i); ?>" onclick="this.setAttribute('checked', 'checked'); this.checked = true;">
        </li>
    <?php }
} 
?>

また

<?php 
if(get_option('var_a') !== ''){ ?>
    <li class="radio">
        <h2><?php print( get_option('var_one')); ?></h2>
        <input name="radio_ask" type="radio" value="<?php print( get_option('var_a')); ?>" id="radio_1" tabindex="1" onclick="this.setAttribute('checked', 'checked'); this.checked = true;">
    </li>
}
if(get_option('var_b') !== ''){ ?>
    <li class="radio">
        <h2><?php print( get_option('var_two')); ?></h2>
        <input name="radio_ask" type="radio" value="<?php print( get_option('var_b')); ?>" id="radio_2" tabindex="2" onclick="this.setAttribute('checked', 'checked'); this.checked = true;">
    </li>
<?php } ?>
<?php 
    //etc. etc.
?>

この質問の根拠は、私がずっと前に書いたコードを持っていて、それ以来たくさんのことを学んだということです。少し片付けたいです。(などのprint($this); print($that);代わりにprint($this.$that);、上記を含めます。

「一番上の」例に移行する方が良いか、またはより良い/よりクリーンな練習方法であることを確認したいだけです。きれいに見えるもので前に進むのは嫌いですが、なぜか見えないので悪いです

編集:コードに問題があったことをお詫びします。簡単な例としてその場で書きました

4

1 に答える 1

5

短い答え

DRY(繰り返さないでください)は、「パフォーマンス」ではなく、もっと恐れるべき原則です。したがって、ループを使用する必要があります。

長い答え

2番目のコードを持つ(恐ろしい)瞬間を考えてみてください。同じコードの長いリストが20回ほど何度も繰り返されます。さらに10行追加したいとします。最初のループは最初(1行)で変更し、2番目のコードはさらに100行のコードを作成します。次に、各コードを少し変更したいとします。2番目のコードでは、そのコードを30回編集する必要があり、最初のコードでは...コンセプトがわかったと思います。

于 2013-01-23T01:39:20.100 に答える