1

Web アプリで頻繁に繰り返される HTML を複製/テンプレート化する最良の方法を見つけようとしています。たとえば、<form>複数のページに配置する必要がある投票 (以下を参照) があります。

私がこれを行うことを考えた2つの方法:

  1. 関数呼び出し、例えば、voteForm($action, $user_id, $formType, $success);
  2. include声明、例えば 、include '/myApp/views/voteForm.php'

include私はステートメント b/cを好みます:

  1. 次に、時間の経過とともに変化する可能性のある関数のパラメーターを決定する必要がなくなり、アプリ内に存在するすべての関数呼び出しを書き直す必要がなくなります。このステートメントを使用すると、 d php ファイルincludeをどこに置いても変数をそのまま使用できます (多くの変数が存在することが多いため、面倒な変数の再宣言を回避します)。include
  2. 文字/json_encodeの問題のエスケープに対処しなければならないPHP文字列としてではなく、HTMLでHTMLを書くことができます。

なんらかの理由 (パフォーマンスなど) でinclude代わりに使用することを再検討する必要がありますか? function()私が考えていない他のテンプレートソリューションはありますか?

    <form action="<?=$action?>" method='post' data-form-data='{'formType': '<?=$formType?>', 'success': '<?=$success?>'} >`
    <input type='hidden' value='<?=$user_id?>' name='user_id'>
    <input type='radio' value='1' name='vote'>
    <input type='radio' value='-1' name='vote'>
    </form>
4

3 に答える 3

1

functionそれは本当にあなた次第です-あなたはあなたを呼び出すハイブリッドを持つことができincludeます(インクルードファイルが表示目的のために必要とするかもしれない必要な変数を設定する)。例えば

function createForm($action,$foo,$bar){
  $form_action = $action;
  $form_foo = $foo;
  include('templates/form.inc');
}

パフォーマンスに関しては、私が知っている大きなメリットはありません。テンプレートを作成するためのより良い方法を探している場合でも、「困難な作業」のほとんどを処理するsmartyまたはその他のシステムを検討することをお勧めします。

HTMLを出力するコードがある場合、関心の分離がなくなることを覚えておいてください。つまり、後日サイトのルックアンドフィールを変更する場合は、.incファイル(または使用した拡張子)だけでなく、両方.inc .phpファイルを調べて変更を適用することになります。

于 2012-11-05T14:06:15.477 に答える
0

生成されたHTMLの大きなブロックには、インクルードを使用することをお勧めします。私は関数呼び出しを使用して特定のデータを取り戻すことを好みます。

繰り返しますが、これは個人的な好みであり、真に「正しい」答えで答えることはできません。

パフォーマンスの面では、一度に1つずつ何千もの呼び出しを行わない限り、ほとんど違いはないと思います。

お役に立てば幸いです。

于 2012-11-05T14:05:21.563 に答える
0

関数呼び出しに HTML を入れないようにします。ここで達成しようとしていることは、個人的な好みに基づいて、include ステートメントに最も適していると思います。

パフォーマンスに関しては、わかりにくいですが、XDebug などの PHP プロファイラーを使用して、関数またはインクルードが最も効率的かどうかを確認できます。

http://xdebug.org/docs/profiler

于 2012-11-05T14:03:56.567 に答える