Разработка web-сайта о кафе, барах и ресторанах города Челябинска

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?бъекта:

$data = new Someclass();

$this->load->view(blogview, $data);

При использовании объекта его переменные будут превращены в массив.

Посмотрим на примере, как работает отображение. Откроем ранее рассмотренный контроллер и добавим следующий код:

<?phpBlog extends Controller {index()

{

$data[title] = "My Real Title";

$data[heading] = "My Real Heading";

$this->load->view(blogview, $data);

}

}

?>

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

Затем загрузим страницу по ранее определенному URL и увидим, что все переменные заменены текстом.

Создание циклов.

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

Например. Добавим эти строки в контроллер:

<?phpBlog extends Controller {index()

{

$data[todo_list] = array(Clean House, Call Mom, Run Errands);

$data[title] = "My Real Title";

$data[heading] = "My Real Heading";

$this->load->view(blogview, $data);

}

}

?>

Теперь откроем файл с отображением и создадим цикл:

В приведенном выше примере используется альтернативный синтаксис PHP.

Модели

Модели используются опционально, если применять более традиционный подход к MVC.

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

class Blogmodel extends Model {$title = ;$content = ;$date = ;Blogmodel()

{

// Call the Model constructor::Model();

}get_last_ten_entries()

{

$query = $this->db->get(entries, 10);$query->result();

}

insert_entry()

{

$this->title = $_POST[title];

$this->content = $_POST[content];

$this->date = time();

$this->db->insert(entries, $this);

}update_entry()

{

$this->title = $_POST[title];

$this->content = $_POST[content];

$this->date = time();

$this->db->update(entries, $this, array(id => $_POST[id]));

}

}

Функции, в приведенном выше примере, используют функции работы с базой данных Active Record.

Устройство модели.

Классы моделей хранятся в папке application/models/. Они могут располагаться в подпапках, если необходима такая организация.

Вот основной прототип класса модели:

class Model_name extends Model {Model_name()

{::Model();

}

}

Где Model_name это имя класса. Имена классов должны начинаться с заглавной буквы, в то время как остальные буквы должны быть в нижнем регистре. Следует убедиться, что класс расширяет базовый класс модели.

Имя файла должно соответствовать имени модели, но быть целиком в нижнем регистре. Например, вот класс:

User_model extends Model {User_model()

{

parent::Model();

}

Имя файла должно быть таким:

application/models/user_model.php

Загрузка модели.

Модели обычно загружаются и вызываются из контроллера. Для загрузки моделей необходимо использовать следующую функцию:

$this->load->model(Model_name);

Если модель находится в под-папке, то надо указать относительный путь до нее. Например, если модель располагается по адресу application/models/blog/queries.php, то для ее загрузки используем:

$this->load->model(blog/queries);

После загрузки можно получить доступ к модели, используя объект с именем, аналогичным названию модели:

$this->load->model(Model_name);

$this->Model_name->function();

Если нужно обратиться к модели используя не ее, а другое имя, то надо передать временное название в функцию загрузки вторым параметром:

$this->load->model(Model_name, fubar);

$this->fubar->function();

Вот пример контроллера, который загружает модель, а потом отображение:

class Blog_controller extends Controller {blog()

{

$this->load->model(Blog);

$data[query] = $this->Blog->get_last_ten_entries();

$this->load->view(blog, $data);

}

}

Авто-загрузка моделей.

Если некоторая модель нужна на глобальном уровне, то можно сообщить CodeIgniter, что эту модель необходимо загружать при инициализации системы. Это можно сделать, открыв файл application/config/autoload.php и добавив модель в массив автозагрузки.

Соединение с базой данных.

При загрузке модели автоматического подключения к базе не происходит. Доступны следующие варианты подключения к базе данных:

Можно соединиться, используя стандартные методы базы данных, описанные здесь или из классов контроллера или модели.

Можно передать в функцию загрузки модели третий параметр TRUE (boolean), который сообщит модели о том, что надо сразу подключиться. При этом будут использованы настройки соединения по умолчанию, которые определены в файле с настройками базы данных:

$this->load->model(Model_name, , TRUE);

- Через третий параметр так же можно передать настройки подключения, заданные вручную:

$config[hostname] = &qu