|
Веб-курсы Что это? Оглавление Основы Основы основ Практика Гостевая книга Простой сайт Структура сайта (MVC) Ядро (Light) Ядро Гостевая на SQL Статические страницы Модуль новостей Система регистрации Теория Дебаггинг Регулярные выражения Введение в ООП Паттерны проектирования Репозитарий BB-code Почтовый класс Пагинатор Всякие полезности Download Полезные утилиты Разное Видеокурсы Последние изменения Вопросы и замечания сюда Реклама Диеты для похудения Фреймворк Kohana. Обучение. Мануал на русском. Розничные и оптовые цены магазин комплектующих для компьютера. |
Шаг 1Основной принципВ прошлом разделе мы построили кой какой сайтец. И даже прикрутили к нему гостевую книгу. Но этот скрипт нельзя назвать полноценным, потому что там хоть и есть подобие структуры, однако все равно еще много чего перемешано. Не отделяется бизнесс-логика от представления, на каждую страницу все равно нужен отдельный файл в корне, ну и так далее.По этому, если действительно хотите стать настоящим программистом, забудьте про тот скрипт. Начнем все сначала. Ну а кто начал отсюда - повезло. )) Жалко? Не нужно жалеть, это всего навсего буквы. Если жалеть каждый неудачно написанный скрипт, толку никогда не выйдет. Мы будем делать настоящие, профессиональные сайты. Для того, что бы делать такие сайты было быстро и удобно, делается основа - ядро. В него уже интегрируются скрипты. Тогда достаточно изменить что то в одном месте и изменения вступят в силу на всех страницах. Вот и попробуем сделать что то подобное, но для начала нужно понять структуру сайта, который основан на каком то движке. Есть масса способов организации называемого движка. Это принято называть архитектурой или паттернами (шаблонами проектирования). Самым популярным на сегодняшний день является паттерн MVC (Model-View-Controller). Ну и начнем отсюда отталкиваться Не пугайтесь, это не страшно. Я тоже, когда первый раз услышал такое определение, долго плевался и не мог понять, что это за зверь. К тому же в аббревиатуре никакой логики Модель-Вид-Контроллер. Вид то должен быть в конце, а тут все перепутано. Графическое представление этого безобразия:
которое приведено в википедии, напомнило мне эту картинку:
хотя на самом деле все просто до безумия. Самым жизненным примером этой схемы является обычный телевизор.
Видели когда-нибудь? Так вот. Сзади у него есть панель с разъёмами. Можно подключить антенну, видеомагнитофон, DVD или даже игровую приставку DANDY. Вот эта панель отвечает за связь с источниками информации либо потребителями. В MVC это называется "МОДЕЛЬ", то есть то, что отвечает за получение или выдачу данных каким то источникам. Базе данных, файловой структуре или еще чего. Прямо напротив, с аверсной стороны, находится экран. Кинескоп. Или плазма, не важно. Важно, что это устройство позволяет сделать работу телевизора видимой. Это "ВИД" или отображение. А между ними что то гудит и иногда дымится. Там непонятная куча деталей, которая из полученной информации может сделать кино. Это "КОНТРОЛЛЕР". Вот и все ужасы. На сайте это выглядит так: 1. Модель - это данные, с которыми работает скрипт. То есть то, что в базе данных или файлах. В общем информация. А так же функции, которые эту информацию получают из источников хранения и передают скрипту. Или наоборот, берут из скрипта и упаковывают для хранения. 2. Вид - это шаблоны. То есть оболочка для информации. Стили, картинки, верстка и прочая красота. А так же функции, которые выбирают нужные шаблоны и вставляют в них нужную информацию. 3. Ну и контроллер - сам скрипт, который готовит блюдо под названием "страница". Движки бывают разными, с использованием шаблонизаторов, фреймворков и так далее. Черт ногу сломит. Я сейчас покажу еще одну структуру, которая очень похожа на упомянутую, но кроме того содержит в себе модульный элемент и на мой взгляд наиболее прозрачна и оптимальна. Для начинающих программистов это очень важно - не заблудиться в сложных парадигмах. Схема эта довольно проста как в реализации так и в дальнейшем использовании. Основные принципы. 1. Полностью разделяем бизнесс-логику с представлением. (Имеется ввиду именно логика и представление, а не php и html) 2. Максимально используется процедурный подход, который более прозрачен. 3. Функционал приложения делится на отдельные, самодостаточные модули. 4. Используется набор общих функций и классов (подобие библиотеки или фреймворка, как угодно) Как это работает. Допустим нам нужно сделать главную страницу, и на ней вывести набивший оскомину "Привет, Мир!". Так и сделаем. Вот первый и главный файл: index.html
Это у нас банальный HTML. Ничего в нем динамически задать невозможно. Поэтому нам нужен исполняемый файл, то есть .php Сделаем такой, обозвав его index.php Он по совместительству будет являться точкой входа. Все ссылки на наш сайт будут вести на него. А предыдущий просто включим в него:
Языковые конструкции include, include_once, requre и requre_once позволяют объединить несколько файлов в один. Подробнее про это тут. Обратите внимание на расширение файла .tpl Теперь это уже не главный файл, а всего навсего шаблон ( англ. template). Это негласное правило, обозначать шаблоны таким расширением. Такие файлы подсвечиваются многими редакторами и сразу видно, что это не готовый HTML а только часть, полуфабрикат. Чего нам не сиделось на месте, ведь вроде бы ничего не изменилось. Но это пока. А вот сейчас и начнется магия динамических сайтов. Переделаем шаблон так:
а index.php так:
Если запустить, то на первый взгляд опять ничего не поменялось, все тот же "Привет, Мир!". Однако сейчас можно не трогая шаблон, изменить значение переменной $content
Ну а что PHP умеет менять значения переменных, для нас не новость. Но как же можно вывести в поток значение переменной, если файл у нас вовсе не php, а вообще непонятный tpl какой то... Все не так плохо. Дело в том, что любые файлы, подключенные к исполняемым (а именно таковым и является главный индекс), воспринимают дескрипторы <?php ?> как специальные теги, и исполняют код, который находится между ними. Причем это совершенно не влияет на tpl в чистом виде и не мешает править верстку. Так как очень похоже на обычный html тег и не воспринимается браузером, если файл открыть напрямую, без сервера. На этом принципе основан так называемый native-синтаксис шаблонов. Но нативе предполагает вынос в шаблон логической составляющей, а нам это не подходит. Мы пойдем другим путем (об этом позже). Вот и вся основа принципа. Разметка осталось в tpl файлах, а логическая составляющая - в php. |