要点に入る前に、コンテキストを紹介させてください:)私は、開発しようとしているMVCフレームワークのビューレイヤーに取り組んできました。アコーディオン、ドロップダウン メニュー、テキスト エディター、カラー ピッカーなどの再利用可能なビューをいくつか作成しました。これを使用して、たとえば、次のことができます。
<?php
$template = newView('Template');
$template->panel()->add(newView('Accordion')
->add('Accordion entry 1')
->add('Accordion entry 2')
->add('Accordion entry 3'));
$template->content()->add(newView('Block')
->add('Bla bla bla')
->add('Bla bla bla')
->add('Bla bla bla'));
echo $template;
?>
そして、そのようなこと。問題は、それを行うには、PHP と html コードを混在させる必要があることです。例:ドロップダウンメニューのHTMLを生成する方法は次のとおりです:
public function __toString() {
$output =
'<nav'.$this->_getHeader().'>'.
$this->_label.
'<ul>';
for($i = 0, $l = count($this->_entries), $last = $l - 1; $i < $l; ++$i) {
if($i === 0) {
$this->_entries[$i]->addClass('First');
}
elseif($i === $last) {
$this->_entries[$i]->addClass('Last');
}
$output .= '<li>'.$this->_entries[$i].'</li>';
}
$output .=
'</ul>'.
'</nav>';
return $output;
}
開発者は、Firebug を使用してコードを美しくしたり、PHP コードを読んだりすることで簡単にこれを設計できますが、設計者はそれを好まないでしょう。これを解決するには、PHP テンプレート システムを使用したいと思います。たとえば、これは設計者にとってはるかに読みやすくなります。
<table>
<?php foreach($users as $user); ?>
<tr>
<td><?= $user->firstName ?></td>
<td><?= $user->lastName ?></td>
</tr>
<?php endforeach; ?>
</table>
私の問題は、PHPテンプレートを使用して再利用可能なビューを作成するにはどうすればよいですか? たとえば、画像とその詳細を含む画像のつまみを表すビューがあるとします。それらを 100 個含むページを表示する必要がある場合、どうすればよいですか? ビューを100回要求する必要がありますか? いまいましい遅いディスクから 100 回実行 / 解析 / ロードされますか? テンプレートを使用して、ある種の「レゴスタイル」のビューレイヤーを構築する方法がわかりません。アイデアや例はありますか?
読んでくれてありがとう。