複数行のSQLクエリ結果のレンダリングを高速化するために、PHPでデータプロバイダクラスを作成しています。基本的に、このクラスには、ページング、並べ替え、最終的にデータのレンダリングを支援するSQL関連のプロパティとメソッドがあります。後者については、私は行を簡単にテンプレートすることができますので、パラメータとして行テンプレートファイルを持つビューファイル(MVCモデル内)から呼び出せるrender()というメソッドを記述しました。それは次のようになります。DB行テンプレートのループに()を含める代わりに?
public function render($row_template_file) {
if($result = mysql_query($this->query)) {
while($row = mysql_fetch_array($result)) {
include $row_template_file;
}
}
}
実際の方法は、(それは、テンプレートファイルが存在するかどうかをチェックするなど、データの抽象クラスではなく、mysql_ *関数を使用しています)それよりも、より洗練されていますが、一般的なアイデアを得ます。行テンプレートファイルには、すなわち、基本的にストレート出力に行くHTMLです:ループ内で)このアプローチはうまく動作します
<div class="row">
<div class="foo"><?php echo $row['foo']; ?></div>
<div class="bar"><?php echo $row['bar']; ?></div>
</div>
、唯一の問題は(含まれているレンダリングする場合は特に、素晴らしいアイデアのパフォーマンスは賢明ではありません多数の行。そのようにテンプレートの行を維持しながら、それを置き換えることができるものはありますか?ここには似たような質問はほとんどありませんでしたが、私が避けたいプレゼンテーションとロジックを混在させることを提案するすべての解決方法がありました。最初の反復で無名関数を作成し、それ以降のすべての反復で呼び出すことを考えていましたが、おそらく私はそれを思慮しすぎているか、ここでその輪を再発明しています。何か案は?
あなたはテンプレートファイルの中でループすることができますか? –