|
Веб-курсы Что это? Оглавление Основы Основы основ Практика Гостевая книга Простой сайт Структура сайта (MVC) Ядро (Light) Ядро Гостевая на SQL Статические страницы Модуль новостей Система регистрации Теория Дебаггинг Регулярные выражения Введение в ООП Паттерны проектирования Репозитарий BB-code Почтовый класс Пагинатор Всякие полезности Download Полезные утилиты Разное Видеокурсы Последние изменения Вопросы и замечания сюда Реклама Диеты для похудения Фреймворк Kohana. Обучение. Мануал на русском. |
Шаг 2БуферизацияОднако одного шаблона для полноценного сайта явно недостаточно. Да и выводить голые буквы без разметки в главный шаблон тоже не очень то красиво - нужна разметка. А как же быть, если известно, что разметки не должно быть в файлах php?Вот тут не помощь приходит одна замечательная особенность PHP. Буферизация. С явлением буферизации пользователь ПК сталкивается очень часто. Другими словами это простой копи-паст. Когда мы выделяем какой то текст и жмем "копировать", то все, что попало в выделение, записывается в переменную (буфер). А когда жмем "вставить", то вынимаем данные из буфера и вставляем куда нужно. Так вот PHP умеет делать тоже самое. Сейчас убедимся. Сделаем второй шаблон: show.tpl
а главный индекс перепишем так:
Что тут происходит. Функция ob_start() начинает складывать в буфер весь вывод, который следует после неё. То есть все это не будет отправлено в браузер, а. Так же, как мы выделяем текст. А так, как мы помним, что вместо include можно прописать код из подключенного файла, получится примерно так:
Опять закономерен вопрос - для чего эти пляски под луной. Ответ прост. На главной странице допустим нам нужно приветствие. А на другой - что то другое. И с совершенно другой разметкой. По этому мы и поделили все на шаблоны, оставив в логической части голые данные. Теперь мы можем не только динамически задавать текст, но и переключать шаблоны. Но для этого нужно создать структуру. Поместим шаблоны в отдельный каталог tpl, а его в другой - skins В него будем складывать все, что касается отображения - стили, картинки, шаблоны и так далее. Это часть паттерна MVC "вид". Вот так:
Теперь главный индекс будет таким:
Вот уже начинает прорисовываться какое то подобие структуры. Что бы её было легче понять, нужно разобраться с файловой системой. В отдельной директории отображение, а логическая составляющая отдельно. Теперь мы можем одним движением заменить директорию skins и получить совсем другой дизайн, оставив не тронутым весь функционал и все данные. Это и есть разделение бизнесс-логики и представления. |