- •Краматорськ 2012
- •Содержание
- •Введение
- •Лабораторная работа №1 Проектирование Web-приложений
- •Краткие теоретические сведения
- •Пример технического задания:
- •Лабораторная работа №2 cms Joomla. Панель управления
- •Лабораторная работа №3 cms Joomla. Наполнение материалом
- •Лабораторная работа №4 cms Joomla. Подключение расширений. Добавление форума
- •Лабораторная работа №5 cms Joomla. Социальная сеть
- •Лабораторная работа №6 cms Joomla. Ведение блога
- •Лабораторная работа №7 Управление интернет - магазином VirtueMart на основе cms Joomla
- •Лабораторная работа №8 Разработка приложений с помощью php
- •Функция in_array
- •Функция array_search
- •Лабораторная работа №9 Разработка приложений бд на cервере MySql с помощью php
- •Установка соединения
- •Выбор базы данных
- •Получение списка полей таблицы
- •Отображение списка полей в html-форму
- •Запись данных в базу данных
- •Лабораторная работа №10 Разработка модулей с использованием mvc фреймворка
- •Краткие теоретические сведения mvc Фреймворк
- •Класс Router
- •Представление
- •Лабораторная работа №11 Разработка компонент для cms Joomla. Разработка простого компонента для пользовательской части
- •Лабораторная работа №12 Разработка компонент для cms Joomla. Разработка компонента с использованием базы данных
- •Лабораторная работа №13 Разработка компонент для cms Joomla. Разработка компонента с административной частью
- •Список рекомендованной литературы
- •7/2005. Підп. До друку Формат 60х84/16.
- •84313, М. Краматорськ, вул. Шкадінова, 72
Представление
Как и в случае с моделями, есть несколько различных вариантов создания компоненты 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 фреймворк выполнить следующее:
Реализовать вывод информации из БД.
Разработать форму наполнения таблицы БД.