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