Разработка 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);

А сейчас пример с использованием