16

私はかなり経験豊富なPHPコーダーであり、HTMLコードの大きなチャンクをエコーするための最良の方法は何であるかを考えています(ベストプラクティス)。

これを行う方が良いですか:

<?php
echo "<head>
<title>title</title>
<style></style>
</head>";
?>

またはこれ:

<?php
define("rn","\r\n");
echo "<head>".rn
."<title>title</title>".rn
."<style></style".rn
."</head>".rn;
?>

phpソースのインデントを台無しにしないので、私は2番目を使用する傾向があります。これはほとんどの人が行う方法ですか?

4

9 に答える 9

21

IMO、最良の方法は通常、HTMLをテンプレートファイルに個別に保存することです。これは通常、入力する必要のあるいくつかのフィールドを含むHTMLを含むファイルです。次に、テンプレートフレームワークを使用して、必要に応じてhtmlドキュメントのフィールドに安全に入力できます。

Smartyは人気のあるフレームワークの1つです。これがどのように機能するかの例です(Smartyのクラッシュコースから抜粋)。

テンプレートファイル

<html>
<head>
<title>User Info</title>
</head>
<body>

User Information:<p>

Name: {$name}<br>
Address: {$address}<br>

</body>
</html>

名前とアドレスをテンプレートファイルにプラグインするPHPコード:

include('Smarty.class.php');

// create object
$smarty = new Smarty;

// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.
$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');

// display it
$smarty->display('index.tpl');

Smartyの他に、好みに合わせてフレームワークをテンプレート化するための合理的な選択肢が多数あります。シンプルなものもあれば、かなり洗練された機能を備えたものもあります。

于 2010-02-27T15:43:12.630 に答える
16

HTMLをPHPコードブロックの外に配置することもできます。

<?php
    // PHP code
?>
<head>
<title>title</title>
<style></style>
</head>
<?php
    // further PHP code
?>
于 2010-02-27T15:44:10.967 に答える
10

HEREDOC(http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc)にもアクセスできることを忘れないでください。

echo <<< HERE
<head>
   <title>title</title>
   <style></style>
</head>
HERE;

また、Smartyテンプレートのようなものを調べます。さらに重要なのは、マークアップをビジネスロジックから分離することを強制するMVCデザインパターンです。

于 2010-02-27T15:42:57.593 に答える
4

ユーザーヒアドキュメント構文

echo <<<NO_MORE

<head>
<title>title</title>
<style></style>
</head>

NO_MORE;

または、php出力htmlから直接エスケープします?> ... <?php

于 2010-02-27T15:44:11.157 に答える
4

どちらも最善の解決策ではないと思います。エコーするhtmlはあまり読みやすくありません。私は常にhtmlをphpタグの外に置きます。このようにして、インデントを取得し、読みやすくします。

このようなもの:

?>
<head>
    <title>title</title>
    <style></style>
</head>
<?php

さらに詳しく知りたい場合は、テンプレートシステムを使用して、ロジックをプレゼンテーションから実際に分離できます。

于 2010-02-27T15:44:48.300 に答える
3

すでに十分な選択肢があるので、2番目のアプローチについてコメントします。エコーでそれを行いたい場合は、以下を使用することをお勧めします。

echo "<head>", PHP_EOL,
     "<title>title</title>", PHP_EOL
     "<style></style", PHP_EOL
     "</head>", PHP_EOL;

カスタム定数の代わりに使用PHP_EOLすると、グローバルスコープに不要な定数が散らかることはなく、PHPが実行されているOSに対して定義されているものが使用されるため、改行はOSに依存しなくなります。

連結の代わりにコンマを使用すると、PHPが連結する必要がまったくなく、echoでスローしたものをすべてフラッシュするため、メモリを節約できます。

于 2010-02-27T15:51:37.977 に答える
1

これは私にとってはうまくいきました!

 <?php
     echo '
          <!DOCTYPE HTML>
          <html lang="en-US">
          <head>
              <meta charset="utf-8" />
              <link rel="stylesheet" type="text/css" href="styles.css" />
              <script type="text/javascript" src="js/jquery.js"></script>
              <script type="text/javascript" src="js/java.js"></script>
          </head>    
          <body>
              <div id="wrap">
                  <div id="main_home"></div>
                  <div id="nav_circle"></div>
                  <input type="text" id="search_text" value="Your search starts here">
              </div>
          </body>
          </html>
    ';
?>

PHP では、このような大量の HTML コードをエコーできます。HTML 内に ' がないことを確認する必要があります。"に置き換えると続きます!!

于 2013-04-02T19:56:07.893 に答える
0

最初の形式は、文字列の連結()を実行しないため、より効率的.です。

于 2010-02-27T15:43:26.143 に答える
0

HTML を表示するために引用符を使用している場合は、単一引用符'を使用します。これは、PHP が変数を二重引用符"で検索するためです。

私にとって、最良の方法はPHPブロックの外にあるものであり、他の人が答えたようです。

また、ショートカットを忘れないでください。

于 2010-02-27T15:56:04.540 に答える