1

要点に入る前に、コンテキストを紹介させてください:)私は、開発しようとしている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 回実行 / 解析 / ロードされますか? テンプレートを使用して、ある種の「レゴスタイル」のビューレイヤーを構築する方法がわかりません。アイデアや例はありますか?

読んでくれてありがとう。

4

1 に答える 1