Разработка web-сайта о кафе, барах и ресторанах города Челябинска
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?авать их напрямую в браузер. Первый параметр этой функции будет содержать окончательный вывод.
Например:
function _output($output)
{
echo $output;
}
Функция _output() будет получать данные в их окончательном состоянии. Бенчмарк и загрузка будут посчитаны, файл будет записан в кеш, все заголовки будут отправлены (при использовании Output Class), и только после этого будет выполнена функция _output(). Если на странице выводится информация о времени выполнения и нагрузке скриптом, то эта информация не будет точной, т.к. в ней учитывается только время исполнения до вызова _output().
Защищенные функции.
В некоторых случаях может понадобиться скрыть ту или иную функцию от публичного доступа. Чтобы сделать функцию приватной - нужно добавить символ подчеркивания перед ее названием, и она не будет отображаться при запросе через URL. Например, если функция называется так:
_utility()
{
// какой-то код
}
Попытки получить к ней доступ, набрав ее имя в запросе, окажутся неудачными:
www.your-site.com/index.php/blog/_utility/
Организация контроллеров в подпапках.
При разработке большого проекта может оказаться вполне удобным деление контроллеров по подпапкам. CodeIgniter позволяет это сделать.
Просто нужно создать внутри папки application/controllers каталог и разместить класс контроллера внутри него.
При использовании этой возможности в первом сегменте URL необходимо указать папку с этим контроллером. Например, контроллер расположен здесь:/controllers/products/shoes.phpдля вызова этого контроллера будет выглядеть так:
www.your-site.com/index.php/products/shoes/123
Каждая из вложенных папок может содержать контроллер по умолчанию, который будет вызван, если URL не содержит название контроллера. Нужно просто назвать его именем по умолчанию, которое указано в файле application/config/routes.php.
Так же вы можете переадресовать контроллеры, используя URI Роутинг.
Конструкторы классов.
Если есть необходимость в каком-либо из контроллеров использовать конструктор, то необходимо разместить в нем следующую строчку:::Controller();
Причина этого в том, что собственный конструктор будет перекрывать конструктор главного контроллера, поэтому необходимо вызвать его вручную.
Можно отметить, что в PHP 4 конструктор - это просто функция, название которой совпадает с названием класса:
<?phpBlog extends Controller {Blog()
{::Controller();
}
}
?>
В PHP 5 конструктор использует следующий синтаксис:
<?phpBlog extends Controller {
function __construct()
{::Controller();
}
}
?>
Конструктор нужен, если надо установить некоторые переменные в значения по умолчанию до того, как будет вызвана функция класса. Конструктор не может возвращать значение, но он может проделывать некоторую работу, по инициализации класса.
Отображения
Отображение - это простая веб-страница или ее фрагмент, например шапка, подвал, боковая панель или т.п. Одни отображения могут быть очень гибко встроены в другие отображения.
Отображения никогда не вызываются напрямую. Они должны быть загружены из контроллеров. В модели MVC контроллер управляет всем происходящим, именно в нем должно быть определено какое отображение загружать.
Для ранее описанного контроллера создадим отображение.
Создание отображения.
Используя текстовый редактор, создадим файл с названием blogview.php и вставим в него следующие строки:
Затем сохраним этот файл в директории application/views/.
Загрузка отображения.
Чтобы загрузить необходимое отображение, используем эту функцию:
$this->load->view(name);
Где name это имя файла с отображением. Следует отметить, что расширение .php не надо указывать.
Теперь откроем контроллер, ранее названный blog.php и заменим в нем функцию echo на функцию загрузки отображения:
<?phpBlog extends Controller {index()
{
$this->load->view(blogview);
}
}
?>
Если зайти на сайт, используя URL определенный ранее, то можно увидеть новое отображение. URL должен быть таким:
www.your-site.com/index.php/blog/
Загрузка нескольких отображений.правильно обработает несколько вызовов $this->load->view из одного контроллера. Если произойдет более одного вызова, то будут загружены все отображения. Например, можно хранить отдельно отображение шапки, отображение меню, контента и подвала. Это может выглядеть примерно так:
<?php
class Page extends Controller {
function index()
{
$data[page_title] = Your title;
$this->load->view(header);
$this->load->view(menu);
$this->load->view(content, $data);
$this->load->view(footer);
}
}
?>
В приведенном выше примере используется динамическое добавление данных.
Хранение отображений в подпапках.
Отображения могут быть сохранены в подпапках, таким образом можно структурировать данные. При таком подходе необходимо будет включать имя папки в путь загрузки отображения. Например:
$this->load->view(имя_папки/имя_файла);
Добавление динамических данных в отображение.
Данные передаются в отображение из контроллера при помощи массива или объекта вторым параметром функции загрузки отображения. Вот пример с использованием массива:
$data = array(
title => My Title,
heading => My Heading,
message => My Message
);
$this->load->view(blogview, $data);
А сейчас пример с использованием