<?php ## Компонентный подход. Компонент показа гостевой книги. if (!defined("GBook")) { define("GBook", "gbook.dat"); // имя файла с данными гостевой книги } require_once "model.php"; // подключаем Модель (ядро) // Загрузка гостевой книги. $data = loadBook(GBook); // Переменная $data теперь доступна вызывающему Шаблону (см. view.php).
<?php ## Компонентный подход. Компонент добавления записи. if (!defined("GBook")) { define("GBook", "gbook.dat"); // имя файла с данными гостевой книги } require_once "model.php"; // подключаем Модель (ядро) // Обработка формы, если Шаблон запущен при отправке формы. // Если нажата кнопка Добавить... if (!empty($_REQUEST['doAdd'])) { // Сначала - загрузка гостевой книги. $tmpBook = loadBook(GBook); // Добавить в книгу запись пользователя - она у нас хранится // в массиве $New, см. форму в шаблоне. Запись добавляется, // как водится, в начало книги. $tmpBook = [time() => $_REQUEST['new']] + $tmpBook; // Записать книгу на диск. saveBook(GBook, $tmpBook); } // Данный компонент не генерирует никаких данных. $data = null;
<?php if (!isset($_GET['review_id'])) { die('Missing required parameter'); } $review_id = $_GET['review_id']; require_once "protectjson.php"; require_once 'pdo.php'; require_once 'util.php'; header("Content-type: application/json; charset=utf-8"); $stmt = $pdo->prepare('SELECT * FROM Review WHERE review_id = :rid AND user_id = :uid'); $stmt->execute(array(':rid' => $review_id, ':uid' => $_SESSION['user_id'])); $review = $stmt->fetch(PDO::FETCH_ASSOC); if ($review === false) { die("Could not load profile"); } $title = loadBook($pdo, $review['book_id']); $rating = loadRate($pdo, $review['rate_id']); $retval = array(); $retval['review'] = $review; $retval['review']['title'] = $title['title']; $retval['review']['rating'] = $rating['rating']; echo json_encode($retval);
<?php ## MVC. Контроллер системы с пассивным Шаблоном. require_once "HTML/Template/IT.php"; require_once "../model.php"; // Инициализируем систему шаблонов. $tpl = new HTML_Template_IT("."); $tpl->loadTemplatefile("view.htm", true, true); // Загружаем данные гостевой книги. $book = loadBook("gbook.dat"); // В цикле генерируем HTML-код книги. foreach ($book as $id => $e) { $tpl->setCurrentBlock("book_element"); $tpl->setVariable("NAME", $e['name']); $tpl->setVariable("TEXT", nl2br($e['text'])); $tpl->parseCurrentBlock(); } // Выводим результат. $tpl->show();
<?php ## MVC. Контроллер (генератор данных) гостевой книги. define("GBook", "gbook.dat"); // имя файла с данными гостевой книги require_once "model.php"; // подключаем Модель (ядро) // Исполняемая часть сценария. // Сначала - загрузка гостевой книги. $book = loadBook(GBook); // Обработка формы, если сценарий вызван через нее. // Если сценарий запущен после нажатия кнопки Добавить... if (!empty($_REQUEST['doAdd'])) { // Добавить в книгу запись пользователя - она у нас хранится в // массиве $_REQUEST['new'], см. форму в Шаблоне. Запись добавляется, // как водится, в начало книги. $book = [time() => $_REQUEST['new']] + $book; // Записать книгу на диск. saveBook(GBook, $book); } // Все. Теперь у нас в $Book хранится содержимое книги в формате: // array ( // время_добавления => array( // name => имя_пользователя, // text => текст_пользователя // ), // . . . // ); // Загружаем Шаблон страницы. include "view.php";