0

時間を節約し、車輪を再発明する必要がないように、他の人と同じようにサンプル コードをダウンロードすることがあります。

かなり複雑なコード関数の後でこれに出くわしたので、それを書いた人はPHPの賢明なことを知っているようです:

<?php if (isset($menu)) { ?>
    <?php echo $menu; ?>
  <?php } ?>

代わりに次のように書かないのはなぜですか。

<?php if (isset($menu)) { echo $menu; } ?>

どちらが優れているか興味があります。

4

7 に答える 7

2

これは純粋に好みやスタイルの問題であり、機能やシステムの設計には影響しません。代替構文がスタイル以外に何の影響も与えないのと同じように。それは次のように非常にうまく書かれている可能性があります:

<?php if (isset($menu)): echo $menu; endif ?>

そしてそれは同じことだったでしょう。

ただし、純粋なロジック ファイルの場合、PHP から抜け出すのはよくない考えであることに注意してください。以下のコード:

<?php if ($test == 1) { ?>
    <?php ++$test; ?>
<?php } ?>

と類似しています:

<?php

if ($test == 1) {
    echo "    ";
    ++$test;
}

<?php ++$test; ?>これにより、4 つのスペース (またはタブ、またはブロックのインデントに使用したもの) を出力するという望ましくない、見過ごされがちな副作用が発生します。同じことがクロージングにも当てはまり?>ます。エディターはファイルの最後に空の改行文字を追加する傾向があるため、純粋なロジック ファイルでは省略したほうがよいことがよくあり?>ますecho

于 2012-12-18T12:19:40.350 に答える
1

最初の例では、PHP タグを閉じてから再度開く必要はありません。例 2 で提供したのと同じように実行できます。

<?php
    if(isset($menu)){
        echo $menu;
    }
?>

タグを閉じてから再度開く必要がある唯一の理由は、さらに HTML も出力したい場合です。

<?php
    if(isset($menu)){ ?>
        <div id="menu">
            <?= $menu ?>
        </div>
    <? }
?>
于 2012-12-18T12:20:06.143 に答える
0

私にとって、それはすべて好みの問題であり、私が達成しようとしていることです..

100% PHP コード ファイルでは、次のようにします。

if (isset($somevariable))
{
    // do some stuff here
}

またはこれさえ

if (isset($somevariable)) echo htmlentities(print_r($somevariable, true));

HTML / PHPファイル(ビューなど)が混在している場合、私はこれを行うかもしれません:

<table>
<?php foreach ($result_set as $row) : ?>
    <tr>
        <td><?php echo $row['column']; ?></td>
    </tr>
<?php endforeach; ?>
</table>

どちらがはるかに簡単に区別できると思いますか

どちらが「良い」という意見はありません

于 2012-12-18T12:22:35.637 に答える
0

2 つのスニプレットに機能上の違いはありません。

コードは最初は次のようになっている可能性があります。

<?php if (isset($menu)) { ?>
<a href='home.php'>Home</a> | <a href='links.php'>Links</a>
<?php } ?>

そして、2 番目の Line だけが、動的に生成されるように適応されています。

于 2012-12-18T12:23:37.413 に答える
0

これについて私が見ることができる唯一の理由は、次のようなこのコードに HTML が混在している場合です。

<?php if (isset($menu)) { ?>
    Html stuff here
<?php echo $menu; ?>
    More html stuff here.
<?php } ?>

ただし、これの実際的な目的は想像できません。

私は個人的にあなたの例 2 のようなことをしたいと思います。PHP から離れる理由はありません。

于 2012-12-18T12:23:49.740 に答える
0

PHPショートタグが有効になっている場合は、使用できます

<?=$menu ?>

これは、次の行とまったく同じことを意味します。

<?php echo $menu;?>

そして、あなたの場合、これは便利かもしれませんが、あまり明確ではないかもしれません

<?=isset($menu)? $menu : "" ?>

行を結合する場合は、改行が許可されていることに注意してください。

<?php
    if(isset($menu)){
        echo $menu;
    }
?>

コードをいじりたくない場合は、PHP テンプレート ライブラリを Google にすることもできます。

于 2012-12-18T12:24:11.270 に答える
0

質問ではなく単なる考えですが、コメントにコードを投稿できないので、ここに行きます。

多分それは単なるレガシーフォーマットですか?つまり、以前は次のようなものでした:

<?php if (isset($menu)) { ?>
    <p>Here comes the menu!</p>
    <?php echo $menu; ?>
    <p>So how did you like it?</p>
<?php } ?>

その後、他の誰かが HTML を削除し、PHP をそのまま残しました。

とにかく、私は @Matt Clark (彼が回答を編集する前でさえ:)) と @rid および他の人たちに、コードが読みやすく、業界標準に従ってフォーマットされている必要があることに同意します。

于 2012-12-18T12:26:27.153 に答える