Збірник скриптів на PHP
Завдання- зібрати сайт зі статичних блоків.
Для того, щоб зібрати веб-сторінку по цеглині, треба її спочатку розбити на цеглинки. Розглянемо як приклад сторінку http://devser.com/code/download.php, з якої, до речі, можна завантажити кілька заготовок для темплейтних сайтів. Верхній блок назвемо Header, нижній, відповідно, – Footer, меню – Menu, а основний інформаційний текст – Main. Це і буде цегла для нашого сайту.
Коли веб-сервер зустрічає цей скрипт, він перенаправляє його інтерпретатор PHP, який на місце кожної команди include вставляє текст з відповідного файлу. Сторінку, отриману в результаті збирання, сервер передає користувачеві.
Звичайно, генерувати подібним чином окрему сторінку немає сенсу. Але при великій кількості сторінок зі схожим компонуванням деякі блоки (у нашому випадку, наприклад, header.txt і menu.txt) будуть використовуватися багаторазово. Виграш від цього виходить подвійний. По-перше, при необхідності змінити, припустимо, меню, редагувати доведеться тільки один файл, а по-друге, основний текст сторінки у файлі main.txt не буде перевантажений тегами і скриптами, що зовсім не належать до справи, значить, менше буде ризик помилки при редагування.
Даний приклад добре ілюструє ідею "збирання" HTML-коду сторінки зі шматочків шляхом вкладення їх у основний блок сторінки. Кожен із файлів, що підключаються, відповідає тільки за одну певну функцію. Але основний сенс полягає в тому, що вдалося повністю позбавитися приміщення HTML-коду всередину PHP-коду, так як тут кожна частинка HTML зберігається в окремому файлі.
Простота прикладу вражає, але підходить такий спосіб тільки для дуже нескладних сторінок. Головний мінус цього варіанта полягає втому, що зв'язки розбитих за окремими файлами блоків HTML-коду жорстко задані всередині PHP-скрипта. Для динамічного сайту це годиться.
Варіант 2. Динамічна структура.
Завдання- створити сайт з функціями динамічної структури даних.
У цьому прикладі ми ближче підійдемо до основного завдання – створити сайт на основі темплейту.
Вигляд основної сторінки (index.php) змінився незначно:
Справа в тому, що все найцікавіше заховано у файлі func.php (див. листинг), який підключається в першому рядку скрипта. Файл func.php складається із двох частин. У першій визначаються значення змінних, які знадобляться надалі, а другий міститься опис функції text, що виконує вставку змінного тексту. У цьому найпростішому прикладі нам знадобилася єдина змінна $text_path, що задає шлях до каталогу, з якого функція text братиме файли.
Може виникнути природне запитання: як же функція text визначить, який файл слід вставити? Адже ми створюємо багатосторінковий сайт. Для доступу до всіх сторінок використовується файл index.php, а для вказівки, якою інформацією заповнити сторінку, служить параметр page, що передається у форматі CGI-запиту, наприклад, index.php?page=news - для посилання на сторінку з новинами або index. php?page=photo - для сторінки з фотоальбомом і т.д. Якщо ім'я розділу не було задано, або вказаної сторінки не існує, виводиться текст із файлу index.txt.
Таким чином, ми позбулися необхідності створювати для кожної сторінки нашого сайту окремий файл, як це було в першому прикладі. Але поки що структурі нашого сайту не вистачає гнучкості. HTML-код, що визначає, як виглядатиме сторінка, розкиданий за окремими файлами-фрагментами, і зміна дизайну сайту може стативеликою проблемою.
Варіант 3. Єдиний темплейт для сайту.
До цих пір ми виходили з того, що структура сторінки може бути описана як набір інформаційних блоків, що послідовно йдуть, які можна просто вставити в файл командою include. Чи треба говорити, що на практиці все набагато складніше? Тим не менш, для більшості веб-сайтів можна виділити з одного боку постійні HTML-конструкції, які повторюються на всіх сторінках і описують їх структуру і дизайн, а з іншого, тексти, що варіюються, які, власне, і складають інформаційне наповнення.
Те, що залишиться, якщо всю змінну інформацію викинути - це і є темплейт сторінки. Для створення темплейтного сайту треба просто навчитися вставляти інформаційні блоки всередину темплейту. На практиці темплейти бувають досить складними, в них використовуються нетривіальні прийоми верстки та дизайну, проте врешті-решт залишається просто додати в темплейт текст. Ми не захаращуватимемо статтю складними прикладами і розглянемо гранично спрощений темплейт:
Помістимо код темплейту у файл index.php. Він повністю описує структуру нашої сторінки, якщо не вважати того, що замість основного тексту міститься виклик функції text, замість меню - виклик функції menu, а замість блоку коротких новин - виклик функції news. Код цих функцій розміщений у файлі func.php, який підключається директивою require на початку темплейту.
Як бачите, наш сайт вже знаходить динаміку. Додаткові можливості дає додавання початку файлу func.php різних змінних - параметрів, значення яких використовуються в коді, що формує інформаційні блоки. Ви можете додати і нові функції, які будуть активно застосовуватися при формуванні сторінок.
Єдиниймінус полягає в тому, що коли буде написано багато функцій, ви почнете в них плутатися. Якщо це трапилося, значить, сайт уже не можна назвати невеликим та нескладним. Час подумати про повноцінному функціональному движку.