Поиск по сайту:

CodeIgniter: начало работы с простым примером


Введение

CodeIgniter — это мощная PHP-инфраструктура, которая может помочь вам значительно ускорить разработку ваших веб-приложений. Он имеет небольшое влияние на производительность из-за модульного подхода к загрузке своих библиотек и отлично справляется с отделением логики от представления с помощью динамической модели-представления-контроллера (MVC).

В этом руководстве вы узнаете, как создать очень простое приложение, отображающее контент из базы данных. Это не предназначено для предоставления решения для создания вашей собственной CMS, а скорее для иллюстрации того, как можно использовать CodeIgniter. Кроме того, он стремится применить на практике некоторые уроки, извлеченные из первого урока.

План

В этой статье вы увидите, как использовать некоторые классы и функции CodeIgniter для запроса таблицы базы данных, содержащей новости, и отображения их по отдельности на странице. Для этого мы создадим контроллер, модель и представление, а также базу данных для хранения информации (хотя последняя часть также предполагается, так как есть много доступных ресурсов, где вы можете освежить свои навыки работы с MySQL).

Требования к базе данных следующие: таблица с именем новости, которая содержит 3 столбца: идентификатор (первичный и автоматически увеличивающийся), заголовок и тело. Конечно можно добавить еще, но для примера и этого достаточно. А затем создайте пару строк в таблице с фиктивными новостями. Вы можете использовать этот отличный учебник, чтобы помочь вам создать свою базу данных, если вы не знаете, как это сделать. Кроме того, убедитесь, что вы настроили CodeIgniter для использования этой базы данных.

Модель

Теперь, когда мы правильно настроили базу данных и CodeIgniter знает об этом, пришло время создать класс модели, который будет запрашивать у нее информацию. Перейдите в папку application/models вашей установки CodeIgniter и создайте новый php-файл с именем news_model.php (вы можете назвать файл как хотите). Добавьте открывающий тег php в начало файла и создайте класс Model, расширив класс CI по умолчанию (помните, что имена классов начинаются с заглавных букв):

class News_model extends CI_Model {

}

Затем внутри этого класса вы должны создать функцию (называемую методом) для запроса к базе данных. CodeIgniter использует шаблон Active Record, который упрощает работу с базой данных. Все, что вам нужно сделать, это загрузить класс базы данных в функцию-конструктор (если вы еще не загрузили его автоматически в файле autoload.php в папке application/config) и Вы можете идти. Чтобы загрузить его, вставьте в класс следующую функцию:

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 и создав класс Controller по расширению:

class News extends CI_Controller {

}

Теперь пришло время работать внутри этого класса, чтобы обрабатывать запросы и отображать соответствующие новости. Вся тяжелая работа происходит в классе Model, поэтому все, что нам нужно сделать здесь, это загрузить его и передать в аргумент 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 при его загрузке.). В этот файл скопируйте следующие строки:

<?php print $title; ?>

<?php print $body; ?>

Как видите, переменные $title и $body передаются в представление из контроллера через массив $data. Вы можете добавить все виды разметки для отображения страницы любым удобным для вас способом, но для наших целей достаточно тега H1 для заголовка и абзаца для тела. Сохраните файл и укажите в браузере только что созданный контроллер:

http://example.com/news/show/1

Если браузер сделает этот запрос, CodeIgniter теперь будет искать контроллер с именем news (в файле класса php с именем news.php), вызывать внутри него метод с именем show() и передайте ему параметр 1. Затем этот метод загрузит news_model, который запрашивает базу данных и возвращает новость, которую затем контроллер передает в представление для отображения. . Очень просто и логично. Если вы перейдете на http://example.com/news/show/2, он отобразит новость с идентификатором, равным 2.

И вот оно: простое, но динамичное приложение, которое запрашивает информацию из базы данных и отображает ее клиенту. Теперь вы можете спросить, а зачем для этого использовать 3 файла и все эти функции и настройки? Что ж, ответ на этот вопрос будет более чем очевиден, когда вы создаете сложные приложения, для которых становится трудно управлять функциональным программированием, а отказ от использования такой среды, как CodeIgniter, заставит вас определять все эти библиотеки самостоятельно.

CodeIgniter — статья № 2