0

私はこれらの違いを本当に見ていません。テンプレートはどのように改善されていますか?私はそれを理解していないだけでなく、私が一緒に仕事をしている人にそれを使用するように説得する方法を理解していません。関心の分離は理解していますが、大きな問題はありません。最初の例は、同じように複数の<li>タグを生成しませんechoか?また、「テンプレート言語」としてphpを使用するので、Smartyやその他のシステムには関心がありません。ありがとう。

PHPでテンプレートシステムを使用する必要があるのはなぜですか?

<h1><?=$title?></h1>
<ul>
  <?php foreach ($items as $item) {?>
  <li><?=$item?></li>
  <?php } ?>
</ul>

および(例としてフォーラムで見つけたスニペット):

echo "<table>";

for ($i = 0; $i < $largestArray; $i++)
{
        echo "<tr>";

        if ($i < $array1Size)
        {
                echo "<td>";
                echo $array1[$i];
                echo "</td>";           
        }
        else
        {
                echo "<td>";
                echo "null";
                echo "</td>";           
        }

        if ($i < $array2Size)
        {
                echo "<td>";
                echo $array2[$i];
                echo "</td>";           
        }
        else
        {
                echo "<td>";
                echo "null";
                echo "</td>";           
        }

        echo "</tr>";
}

echo "</table>";

またはこのようなもの:

<table id="working" border="0" cellspacing="1" cellpadding="3">
    <tr>
        <?php foreach ($csv->titles as $value): ?>
            <td><?php echo $value; ?></td>
        <?php endforeach; ?>
    </tr>

    <?php foreach ($csv->data as $key => $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>
                <td><?php echo $value; ?></td>
            <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>

編集:これはコミュニティウィキの質問である必要がありますか?

4

3 に答える 3

1

あなたの識別は少し混乱しているように見えますが、主なポイントは、2 番目のバージョンがはるかに読みやすいということです (たとえば、タグ階層を簡単に読み取ることができます)。また、読み取り可能なコードとは、簡単に保守またはリファクタリングできるコードです。

PHP の echo キーワードだけを使用して以下のコードを記述すると、あまり読みにくくなります。また、引用符と二重引用符についても懸念がありました。テンプレートのようなアプローチを使用すると、HTML ドキュメントに似たコードになります。

<table id="working" border="0" cellspacing="1" cellpadding="3">
    <tr>
        <?php foreach ($csv->titles as $value): ?>
            <td><?php echo $value; ?></td>
        <?php endforeach; ?>
    </tr>
    <?php foreach ($csv->data as $key => $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>
                <td><?php echo $value; ?></td>
            <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>
于 2012-08-02T17:06:42.470 に答える
0

テンプレートシステムは、プレゼンテーションロジックを分離するための万能のソリューションではありません。これらはソリューションであり、多くのPHPフレームワークで使用されています。一般に、「MVC」/ MVA / MVP / MVVM PHP開発では、プレゼンテーション層にビジネスロジックは必要ありません。HTMLをエコーアウトすることは、(通常は)この慣行に直接違反します。テンプレートを使用すると、ビジネスロジックはプレゼンテーション層に存在せず、その逆も同様です。

最初のポイントに戻ってスキップすると、テンプレートは解決策であり、解決策ではありません。コーディングスタイルやフレームワーク/ライブラリの使用法に大きく依存して、プレゼンテーション層で利用できるオプションはたくさんあります。

個人的なレベルでは、上記で概説したもの以外のいくつかの理由から、テンプレート(ほとんどの小規模プロジェクトの場合)を好みます。

  1. 「テーマ設定」とサイトスタイルの交換がはるかに簡単になります。テンプレートを変更するか、さまざまなテンプレートをロードできるテーマスイッチャーを実装するだけです

  2. テンプレートは(通常)単なるHTMLであり、いくつかのphpスニペットがデータをエコーアウトするため、モックアップからテンプレートへの移行は簡単です。

  3. テンプレートは「ばかげている」。彼らはビジネスロジックで起こっていることについて何も知る必要はありません。彼らが気にするのは、いくつかのデータをHTMLにエコーアウトすることだけです。

  4. 読みやすさ。これは、特にさまざまなテンプレート構文を考慮すると、ほぼ完全に個人的な好みです。

tl; dr-ホスティング、顧客の要件、トラフィックレベルなどに基づく制約がない限り、テンプレートと[ここに他のソリューションを挿入]はほぼ完全に主観的です。その場合は、効率とスケーラビリティに関するベンチマークなどを見つけて、プロジェクトの要件に基づいた情報に基づく決定。

于 2012-08-02T17:34:03.210 に答える
0

Cakephp や codeignitor などのテンプレート システムは MVC を使用して、コードをクリーンにし、標準に準拠させます。独自の MVC を作成することもできます。

于 2012-08-02T17:04:54.737 に答える