Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-пр_МВ_ДЗ_ЛР_1.doc
Скачиваний:
18
Добавлен:
13.11.2019
Размер:
5.4 Mб
Скачать

Представление

Как и в случае с моделями, есть несколько различных вариантов создания компоненты View в MVC-системе. Мы могли бы научить класс Router автоматически загружать ещё один файл, названный как-нибудь так: «view_{имя}.php». Но чтобы сделать руководство более понятным, напишем класс Template, который будет заниматься выводом шаблонов.

Сначала создадим файл template.php в директории classes и вставим в него следующий код:

<?php

Class Template {

private $registry;

private $vars = array();

function __construct($registry) {

$this->registry = $registry;

}

}

?>

Теперь у нас есть основная структура класса Template. Следующим шагом добавим такой код в файл index.php прямо перед строками, связанными с классом Router:

# Создаём объект шаблонов

$template = new Template($registry);

$registry->set ('template', $template);

Так как нам понадобится использовать значения из моделей и контроллеров, то напишем метод set() для установки переменных, доступных в шаблонах. Посмотрим на пример:

function set($varname, $value, $overwrite=false) {

if (isset($this->vars[$varname]) == true AND $overwrite == false) {

trigger_error ('Unable to set var `' . $varname . '`. Already set, and overwrite not allowed.', E_USER_NOTICE);

return false;

}

$this->vars[$varname] = $value;

return true;

}

function remove($varname) {

unset($this->vars[$varname]);

return true;

}

Методы set() и remove() достаточно простые и используются, соответственно, для установки и удаления переменных.

Займёмся написанием метода show(), который будет отображать шаблоны. Простейший путь – это создать отдельную директорию templates, где хранить все файлы шаблонов, и использовать include() для вывода шаблона. Разумеется, Ваш собственный метод show() может быть совершенно другим и загружать шаблоны из базы данных или делать что-нибудь ещё.

Codeigniter

CodeIgniter — открытый фреймворк написанный на PHP для разработки полноценных веб-систем и приложений. Разработан компанией EllisLab, а также Риком Эллисом (Rick Ellis) и Полом Бурдиком (Paul Burdick).

Фреймворк – это готовый каркас для приложений, которые будут строиться на его основе. В этот каркас включены наиболее часто используемые библиотеки. Можно при написании каждого нового приложения изобретать велосипед с распределением его основных модулей, структурой директорий, классами обработки основных компонентов и т.п., а можно воспользоваться готовым универсальным решением.

CodeIgniter является инструментарием для тех, кто строит веб-приложения на PHP. Его цель в том, чтобы позволить вам разрабатывать приложения быстрее, чем если бы вы писали код с нуля, предоставляя богатый набор библиотек для часто используемых задач, а также простой интерфейс и логическую структуру для доступа к этим библиотекам. CodeIgniter позволяет творчески сосредоточиться на ваших проектах, используя минимальный объема кода, необходимый для той или иной задачи.

CodeIgniter обладает рядом значительных плюсов перед другими веб-фреймворками, например:

  • используется модель MVC (Модель-Представление-Контроллер), хорошо зарекомендовавшая себя при разработке приложений самой разной направленности;

  • поддерживается множество баз данных (MySQL, PostgreSQL, MSSQL, SQLite, Oracle);

  • отлично написанная документация с примерами позволит быстро освоить фреймворк;

  • CodeIgniter очень быстр в работе. Его считают эталоном скорости генерации страниц.

ПРИМЕР - разработка с помощью CodeIgniter простого приложения вывода строки приветствия

Создание контроллера welcome.php (application/controllers/ welcome.php):

<?php

class Welcome extends Controller {

function Welcome()

{

parent::Controller();

$this->load->model('User_model', 'users'); // указание подключаемой модели

}

function index()

{

$this->load->view(welcome_message'); // указание файла отображения приветствия codeigniter

}

function say_hello($id=1) {

$data['name'] = $this->users->name($id);

$this->load->view('hello', $data); // указание файла отображения views и данных

}

}

Создание модели user_model.php (application/models/ user_model.php):

<?php

class User_model extends Model {

function name($key) {

$names = $this->names();

return $names[$key];

}

function names() {

return array(1 => "Admin", 2 => "User"); // в зависимости от переданного параметра будет

} вывод имени соответствующего пользователя

}

?>

Создание представления hello.php (application/views/hello.php):

<html>

<head>

<title>Welcome to CodeIgniter</title> </head>

<body>

<h1><font color=red> Hello, <?=$name?></h1>

</body>

</html>

Запуск приложения:

Структура файлов приложения:

Дополнительная информация

Получение списка всех записей таблицы:

function all()

{

$query = $this->db->get('posts');

if ($query->num_rows == 0) return false;

return $query->result();

}

Вывод данных на форму:

<table border="1">

<tr> <td> Id </td> <td> Id_user </td> <td> post_name </td> <td> post_data </td><td> post_delete</td></tr>

<?php foreach($posts as $post):?>

<tr>

<td><?=$post->id?></td>

<td><?=$post->user_id?></td>

<td><?=$post->contents?></td>

</tr>

<?php endforeach; ?>

</table>

  • функции контроллера:

class Admin extends Controller {

function Admin()

{

parent::Controller();

$this->load->model('Post_model', 'post');

}

function post() {

$data['posts'] = $this->post->all();

$this->_render('posts', $data); // имя view

}

function _render($content = "", $data = array()) {

$this->load->view("admin/{$content}", $data);

}

Задание на работу:

Используя MVC фреймворк выполнить следующее:

  1. Реализовать вывод информации из БД.

  2. Разработать форму наполнения таблицы БД.