Разработка простого приложения CodeIgniter
PHP, VPS | Комментировать запись
CodeIgniter – это мощный PHP-фреймворк, способный значительно ускорить разработку веб-приложения. Его работа не требует больших ресурсных затрат благодаря модульному принципу загрузки библиотек и разделению логики и представления при помощи архитектуры MVC (Model-View-Controller, «модель-вид-контроллер»).
В данном руководстве речь пойдет о разработке простого приложения, отображающего контент БД. Кроме того, это руководство продемонстрирует на практике некоторые основы работы с фреймворком, описанные в этой статье.
Обратите внимание: предполагается, что CodeIgniter установлен и настроен согласно первому руководству серии.
Это руководство продемонстрирует использование некоторых классов и функций CodeIgniter на примере отправки запроса таблице базы данных, содержащей новости, которые нужно отобразить на отдельных страницах.
Для этого понадобится создать контроллер, модель и вид, а также базу данных для хранения информации
Примечание: предполагается, что база данных MySQL уже установлена на сервер.
Руководство имеет к БД следующие требования: она должна содержать таблицу по имени news, в которой должно быть 3 столбца по имени id, title и body. Конечно, необязательно ограничиваться тремя столбцами, но для выполнения данного руководства этого хватит. Кроме того, в таблице нужно создать пару строк, содержащих какие-либо новости.
Не забудьте проверить, настроено ли взаимодействие CodeIgniter с БД.
Модель
Итак, выполнив все предварительные требования, приступайте к разработке модели, которая будет запрашивать информацию из БД. Перейдите в папку application/models установки CodeIgniter и создайте новый php-файл по имени news_model.php (в целом, его можно назвать как угодно). Добавьте открывающий тег php в начало файла и создайте класс модели путем расширения стандартного класса CI (помните, что имена классов начинаются с заглавной буквы):
class News_model extends CI_Model {
}
В этом классе нужно создать функцию (которая также называется методом) для запроса к БД. CodeIgniter использует шаблон Active Record, который позволяет очень быстро создать такую функцию. Все, что нужно сделать – загрузить класс БД в функцию-конструктор. Чтобы сделать это, вставьте следующую функцию в класс:
public function __construct() {
$this->load->database();
}
Теперь все методы в этом классе смогут использовать функции БД. Затем нужно сделать так, чтобы вышеупомянутый метод в классе Model читал информацию из таблицы базы данных:
public function get_news($id) {
if($id != FALSE) {
$query = $this->db->get_where('news', array('id' => $id));
return $query->row_array();
}
else {
return FALSE;
}
}
Эта функция просто проверяет, был ли передан идентификатор, прежде чем извлекать из таблицы news строку с ID нужной новости и возвращать ее в качестве ассоциативного массива, содержащего все столбцы в таблице. Если идентификатор не был передан, функция вернет FALSE. Проще говоря, она отвечает за извлечение информации. Сохраните и закройте файл.
Теперь нужно позаботиться об обработке запроса на клиенте, который требует эту информацию.
Контроллер
Перейдите в папку application/controllers и создайте новый файл php по имени news.php (имя этого файла должно совпадать с именем класса). В этом файле снова откройте тэг php и создайте класс контроллера:
class News extends CI_Controller {
}
Теперь нужно выполнить несколько действий в этом классе, чтобы запросы обрабатывались должным образом, а на экране появлялась нужная информация. В целом, вся самая тяжелая работа выполняется в классе модели; в классе контроллера нужно загрузить класс модели и передать его аргументу ID нужной новости. Итак, создайте функцию по имени show():
public function show($id) {
$this->load->model('news_model');
$news = $this->news_model->get_news($id);
$data['title'] = $news['title'];
$data['body'] = $news['body'];
$this->load->view('news_article', $data);
}
Этот метод выполняет следующее:
- первая строка загружает только что созданную модель news_model;
- вторая строка использует эту модель и хранит результат запроса (ассоциативный массив, содержащий все столбцы в строке) в переменной $news;
- третья и четвертая строки хранят в массиве $data заголовок и тело извлеченных данных;
- пятая строка загружает вид для отображения данных и передает его.
Каждое значение в массиве $data представляет переменную для вывода в файле вида. Давайте рассмотрим его подробнее.
Вид
Перейдите в папку application/views и создайте файл php по имени news_article.php.
Имейте в виду: имя этого файла должно совпадать с именем, указанным в контроллере; также стоит помнить, что в контроллер не нужно вносить расширение файла.
В этот файл внесите следующие строки:
<?php print $title; ?>
<?php print $body; ?>
Как видите, переменные $title и $body должны передаваться виду из контроллера через массив $data.
В целом, можно задать любой вид разметки для отображения страницы, но в данном примере достаточно использовать тег H1 для заголовка, а тело поделить на абзацы. Сохраните файл и направьте браузер на только что созданный контроллер:
http://example.com/news/show/1
Если все было выполнено правильно, CodeIgniter будет искать контроллер по имени news (в классе файлов news.php), вызовет метод show() и передаст ему параметр 1. Этот метод загрузит модель news_model, которая запрашивает БД и возвращает полученные данные контроллеру, который передает их виду для отображения. Очень просто и логично. Если перейти по:
http://example.com/news/show/2
на экране появится новость с ID 2.
Базовое, но весьма динамичное приложение, которое может запрашивать информацию из БД и отображать ее на клиенте, готово! Преимущества CodeIgniter очевидны даже на таком простом примере. Просто представьте разработку более сложного приложения без CodeIgniter – огромное количество задач разработчику придется выполнять вручную.
Tags: CodeIgniter, Linux, MVC, MySQL, PHP, Ubuntu, VPS