1

私の PHP スクリプトでは、いくつかの PHP/MySQL データが混在する大量の HTML を連結しています (最初の例)。通常、私のコードは混乱しているように見えます。これは、このコードの混合に構造を持ち込むことができないためです。

それで、私は、2 番目のスクリプトは最初のスクリプトよりも遅い (またはパフォーマンスが低い) のではないかと考えていました。

最初のスクリプト

$message = <div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
<div class="input" style="margin-left: 210px;"><b>' . $item1[0]['organisation'] . '</b>
</div><div class="label" style="width:200px; float:left; text-align:right;">Group:</div> <div class="input" style="margin-left: 210px;"><b>' .
  $item1[0]['group'] . '</b></div><div class="label" style="width:200px; float:left; 
text-align:right;">Name:</div> <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['firstname'] . ' ' . $item[0]['lastname'] . '</b></div>

2 番目のスクリプト

$message  = <div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
$message .= <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['organisation'] . '</b></div>
$message .= <div class="label" style="width:200px; float:left; text-align:right;">Group:</div> 
$message .= <div class="input" style="margin-left: 210px;"><b>' .$item1[0]['group'] . '</b></div>
$message .= <div class="label" style="width:200px; float:left; text-align:right;">Name:</div> 
$message .= <div class="input" style="margin-left: 210px;"><b>' . $item1[0]['firstname'] . ' ' . $item[0]['lastname'] . '</b></div>

または、PHP で生成された HTML ページを処理するためのさらに良い方法はありますか?

4

4 に答える 4

6

読みやすさは、パフォーマンスの最適化よりも常に優先されるべきです。どちらが速いかを尋ねているという事実は、問題のコードまでパフォーマンスの低下を実際に追跡していないことを示しています。あなたが本当に求めているように見えるのは、コードをより読みやすくする方法です。これは、コードが人間によって読み取られ、コンピューターによって実行されることを意図しているため、理解できます。

このような状況での私の最初のアドバイスは、HTMLの大きなチャンクと、PHPコードのごく一部のみを出力する場合は、常にPHPパーサーを終了することです。

<?php
/* Put your PHP code here */
$PHP = "PHP";
?>
<p>This is some html with a little <?php echo $PHP ?> code</p>

を閉じてHTMLコードの大きなチャンクを作成することにより、PHPに、PHPコードの解析を停止し、次のコードが見つかるPHP tagsまでプレーンテキストとして出力するように指示するだけです。opening PHP tag

もう1つのオプションは、面倒な一重引用符/二重引用符のエスケープをすべて必要としないヒアドキュメント構文を使用することです。

変数の補間は文字列構文内で直接可能であるため、以下が機能します。

$string = <<<EOL
<p>This is some html with a little $PHP code</p>
EOL;
于 2012-12-05T10:05:29.323 に答える
2

この 2 つの違いに気付くことはありません。これは、99.999% のサイトが心配する必要のないマイクロ最適化です。

個人的には、次のようにします。

<div class="label" style="width:200px; float:left; text-align:right;">Organisation:</div>   
<div class="input" style="margin-left: 210px;"><b> <?php echp $item1[0]['organisation'] ?> </b></div>
<div class="label" style="width:200px; float:left; text-align:right;">Group:</div> 
<div class="input" style="margin-left: 210px;"><b><?php echo $item1[0]['group'] ?></b></div>
<div class="label" style="width:200px; float:left; text-align:right;">Name:</div> 

次に、さらに一歩進んで、インライン スタイルを使用しないでください。これにより、可読性と編集性が大幅に向上します

于 2012-12-05T09:53:49.170 に答える
0

文字列への出力が本当に必要で、きれいなコードを書きたい場合は、出力バッファリングを使用します。

ob_start()
?>
<html>
<body>
  <div></div>
</body>
</html>
<?
$message = ob_get_contents();
ob_end_clean();

ただし、実際の html を出力してから、<?=$var?>またはイベントなどの PHP 変数のみをエコーする方がよいでしょう。<?php echo $var; ?>

于 2012-12-05T10:03:45.647 に答える
0

無慈悲に同意。パフォーマンスの問題はありませんが、メンテナンスの問題があります;-)

このサンプル コードを見て、何ができるかを確認することをお勧めします。

<form method="post" action="add_url_here">
    <label>
        Organisation:
    </label>
    <input type="text" name="organisation" value="<?php echo $item1[0]['organisation'] ?>" />

    <label>
        Group:
    </label>
    <input type="text" name="group"  value="<?php echo $item1[0]['group'] ?>" />

    <label>
        Name:
    </label>
    <input type="text" name="name"  value="<?php echo $item1[0]['name'] ?>" />
</form>

そしてスタイリングのために:

<style>
    label {
        width:200px; 
        float:left; 
        text-align:right;
    }

    input {
        margin-left: 210px;
    }

</style>

これを行うこともできます:

$message =
  '<form method="post" action="add_url_here">
    <label>
    Organisation:
    </label>
    <input type="text" name="organisation" value="' . $item1[0]['organisation'] . '" />

    <label>
    Group:
    </label>
    <input type="text" name="group"  value="' . $item1[0]['group'] . '" />

    <label>
    Name:
    </label>
    <input type="text" name="name"  value="' . $item1[0]['name'] . '" />
</form>';
于 2012-12-05T10:08:14.423 に答える