Прежде, чем я доберусь до сути, позвольте мне представить контекст :) Я работал над слоем представления фреймворка MVC, который я пытаюсь разработать. Я создал несколько многоразовых такие представлений, как гармошка, выпадающее меню, текстовый редактор, выбор цвета и т.д. Используя это, я могу сделать, например:Как правильно использовать функции шаблонов PHP?
<?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;
}
developper может легко спроектировать это, украшая код с помощью 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 раз? Я не вижу, как я мог бы создать какой-то «видный стиль» с помощью templaetes. Есть ли у вас какие-либо идеи или даже примеры?
Спасибо за чтение.
Я бы утверждать, что вы именуя вид не вид - частичный вид в большинстве. IMHO-представление создало бы всю html-страницу с вызовами частичных представлений для логических элементов, таких как аккордеоны – Basic
Давайте назовем эти части HTML тогда :) – Virus721
@Basic Я бы сказал, что представление может просто состоять из нескольких представлений и оставить это на этом. Я не понимаю, почему представление, которое не является цельной HTML-страницей, не должно быть обычным представлением. Зачем делать это различие? Кроме того, как я вижу это, определяя страницу «Просмотр как HTML», вы говорите, что файл CSV, документ PDF или данные JSON не могут быть представлением. И хотя я не эксперт MVC, я бы сказал, что возможность переключения между различными форматами с одинаковыми данными - это в точности то, что делает MVC стоящим. – toon81