PHP

Руководство по CodeIgniter

Руководство по CodeIgniter

Вступление

В данном руководстве по CodeIgniter мы представим этот фреймворк. Рассмотрим, как установить и настроить CodeIgniter на виртуальный хостинг от Hostinger, и, к тому же, построим первое приложение на PHP, используя этот популярный фреймворк. Также расскажем об MVC и чем эта схема помогает в современной веб разработке.

Что такое CodeIgniter?

Сегодня в сфере веб разработки ценится эффективность и модульность. Прошли те времена, когда вам надо было переписывать один и тот же код для нескольких приложений или прилагать коллективные усилия для быстрого создания приложения. Современные веб фреймворки делают это за вас.

CodeIgniter один из таких фреймворков доступных для PHP-разработчиков. Вероятно, самый популярный среди подобных, он очень ускоряет веб разработку на PHP благодаря многочисленным библиотекам и пакетам. Библиотеки удобно применять там, где распространено повторное использование кода, снимая с разработчиков необходимость выполнять рутинную работу.

Основанная на архитектуре Модель-Представление-Контроллер (Model View Controller), CodeIgniter также добавляет логическое разбиение для вашего приложения. Это отражается не только на чистоте и лучшей структурированности приложения, но и полезно для распараллеливания циклов разработки. В результате в ваши продукты легко вносить изменения и можно значительно ускорить их выход на рынок.

Предполагается, что вы имеете базовые знания в PHP и опыт работы с командной строкой в Linux.

Что понадобится

  • SSH доступ к виртуальному хостингу или VPS
  • Nano или любой другой текстовый редактор

Шаг 1 – установка Codeigniter

Для установки CodeIgniter, вам понадобится либо виртуальный хостинг Hostinger или LAMP (Linux, Apache, MySQL, PHP) уже готовые к работе и запущенные на VPS или на вашей локальной системе. Данное руководство подходит для выполнения на любом дистрибутиве Linux; разумеется, мы используем аккаунт на виртуальном хостинге от Hostinger.

Прежде всего, зайдите по SSH в свой аккаунт. Если вы не уверенны, что знаете как это сделать, посмотрите это руководство.

Чтоб начать процесс установки откройте терминал и войдите в каталог public_html. В нашем случае это можно сделать следующей командой:

cd /public_html

Теперь нужно скачать последнюю версию CodeIgniter. Это можно сделать посетив официальную страницу для скачивания, и закачав оттуда zip файл. На момент написания этого руководства, последняя выпущенная стабильная версия CodeIgniter была 3.1.4.:

wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip

Для распаковки файла выполните эту команду:

unzip 3.1.4.zip
Если вы устанавливаете CodeIgniter на VPS, возможно, у вас в системе ещё не установлен Zip. В таком случае, вы получите ошибку при выполнении предыдущей команды. Вы можете легко это разрешить, скачав и установив unzip, например, так:
sudo apt-get install zip

Теперь вы сможете распаковать при помощи unzip вашу копию CodeIgniter.
После распаковки вы увидите каталог с названием CodeIgniter-3.1.4. Вы можете его переименовать для удобства, например, так:

mv /var/www/CodeIgniter-3.1.4 /var/www/codeigniter

Откройте браузер и введите путь к этому каталогу:
http://yourdomain.com/codeigniter

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

Codeigniter Tutorial Welcome Screen

Шаг 2 – настройка Codeigniter

Так как вы только установили CodeIgniter, то первым делом его нужно настроить. Хотя это и самая объёмная часть нашего руководства, к счастью, настройку CodeIgniter нужно делать всего раз, после установки.

Начнём с создания нового пользователя базы данных MySQL. На Hostinger это можно сделать в разделе “Базы Данных MySQL”.

Создание новой БД на Hostinger

В начале процесса настройки CodeIgniter нужно предоставить всю необходимую информацию о вашей базе данных MySQL. Это можно сделать изменяя файл database.php в комплекте поставки CodeIgniter. Откройте файл запустив следующую команду:

/codeigniter/application/config/database.php

Теперь вам видно содержимое файла. Нужно найти следующую часть файла и включить туда информацию по настройкам вашей базы данных MySQL. Например, для подключения к базе данных, созданной в Hostinger, файл настройки должен выглядеть вот так.

 $db['default']['hostname'] = 'mysql.hostinger.com'; 
 $db['default']['username'] = 'u245984917_user';
 $db['default']['password'] = 'password';
 $db['default']['database'] = 'u245984917_database';
 $db['default']['dbdriver'] = 'mysql';
 $db['default']['dbprefix'] = '';
 $db['default']['pconnect'] = TRUE;
 $db['default']['db_debug'] = TRUE;
 $db['default']['cache_on'] = FALSE;
 $db['default']['cachedir'] = '';
 $db['default']['char_set'] = 'utf8';
 $db['default']['dbcollat'] = 'utf8_general_ci';
 $db['default']['swap_pre'] = '';
 $db['default']['autoinit'] = TRUE;
 $db['default']['stricton'] = FALSE;

Как только вы обновите файл соответствующей информацией, сохраните его и закройте. И это всё – вы успешно синхронизировали вашу базу данных с CodeIgniter.
Следующим действием нужно прописать ваше доменное имя. Для этого откройте файл config.php:

nano /codeigniter/application/config/database.php

После открытия найдите и отредактируйте строку.

$config['base_url']='http://yourdomain.com'

Эта строка означает, что у вас есть yourdomain.com и он указывает на каталог, в котором установлен CodeIgniter (последняя команда в Шаге 1), отредактируйте файл config.php, как указано в строке выше.

2.1 Настройка виртуального хоста на VPS

Пропустите этот раздел, если вы устанавливаете Codeigniter на виртуальный хостинг Hostinger.

Виртуальный хост удобен, если вы собираетесь запустить несколько приложений, используя одно доменное имя. Это может помочь, если у вас есть один VPS и несколько приложений, продуктов или чего-либо ещё, запущенного на нём. Вы можете создавать виртуальные хосты при помощи сервера Apache.

Хотя создание виртуальных хостов и выходит за рамки этого руководства, всё же вам нужно сделать некоторые дополнительные изменения в настройках CodeIgniter перед началом разработки.

Прежде всего, нужно убедиться, что корень документа синхронизирован с каталогом установки CodeIgniter. Для этого откройте файл виртуального хоста:

sudo nano /etc/apache2/sites-enabled/000-default

В открытом файле ищите такой блок и вставляйте каталог установки после Document Root:

<VirtualHost *:80>
DocumentRoot /path/to/codeigniter
[.......]
<VirtualHost *:80>

Убедитесь, что путь /path/to изменён на настоящий.

Теперь все ваши URL-ссылки будут указывать туда, где установлен CodeIgniter.
Для следующих изменений нужны некоторые разъяснения. По умолчанию CodeIgniter придерживается следующего формата URL-ссылки:

<base_url>/index.php/<controller_name>/<controller_function>/<function_parameter_1>/>/<function_parameter_2>…

Как видите, index.php единственная статическая часть URL-ссылки. В целях поддержания хорошей практики разработки, попробуем избавится и от него.

Для этого откроем ещё раз файл config.php:

nano codeigniter/application/config/config.php

И заменим следующую строку:

$config['index_page'] = 'index.php';

На эту строку:

$config['index_page'] = '';

Пока что это только половина дела. Чтобы убедиться, что вы не подверглись череде ошибок, нужно перенаправить запросы с помощью файла .htaccess.

Прежде чем это сделать, проверьте включён ли у вас mod_rewrite:

apache2ctl -M

Этой командой Apache отобразит список всех возможностей сервера. Если в списке среди них вы найдёте mod_rewrite, переходите к следующей команде. Если же нет, то выполните такую команду:

a2enmod rewrite

И перезапустите ваш сервер:

sudo service apache2 restart

Теперь, создайте файл .htaccess в корне каталога CodeIgniter:

nano codeigniter/.htaccess

Эта команда создаст и откроет файл .htaccess. Разместите такие строки в файле, сохраните и выйдите из него:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]

И наконец, нужно дать знать серверу Apache, что он должен проверить вновь созданный файл .htaccess. Чтобы сделать это, откройте файл виртуальных хостов и убедитесь, что AllowOverride установлено в значение All:

<Directory>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Теперь в своём ULR вы не будете видеть немилый глазу index.php. В результате, ваши URL-адреса будут выглядеть чисто и красиво.

Шаг 3 – Понимание MVC

Чтобы лучше понять, что же делает фреймворк, такой как CodeIgniter, стоит часть этого руководства посвятить освещению вопроса, что такое MVC.

MVC является преимущественно парадигмой архитектуры веб-разработки, которая рекомендует, чтобы в каждом приложении бизнес-логика отделялась от визуальной части – представления. Этот подход делит приложение на три функциональные части: Модель, Представление и Контроллер.

Модель выполняется всю грязную работу – она ответственная за взаимодействие с базой данных, проведение вычислений и так далее. Коротко говоря, это ваша бизнес-логика. Представление, с другой стороны, ничего не делает с логикой приложения. Оно формирует презентационный слой для приложения, где данные, пришедшие от Модели, встраиваются в страницы при их загрузке. Контроллер это связующее звено между Моделью и Представлением. Он направляет запрос пользователя к нужной модели и как только модель выполнит свою работу, он загрузить соответствующее Представление.

Поскольку CodeIgniter поддерживает объектно-ориентированное программирование (ООП), все модели и контроллеры это PHP классы, расширяющие основные классы предоставленные фреймворком. Представление это так же файлы PHP, но только в названии, так как внутри они содержат HTML/CSS. Для отображения данных, предоставленных Моделью, присутствуют только фрагменты кода PHP.

MVC даёт разработчику дополнительную гибкость в терминах повторного использования кода и разделения дизайна и реализации. У вас могут быть вложенные части интерфейса и вам не придётся писать один и тот же код для разных представлений – хорошим примером может быть панель навигации на каждой странице приложения. И, так как уровень модели и уровень представления разделены, разработчики интерфейса могут работать параллельно с основной командой разработчиков, тем самым значительно сокращая время создания приложения.

3.1 Основы маршрутизация (роутинга)

Как CodeIgniter формирует URL уже рассматривалось выше:

<base_url>/index.php/<controller_name>/<controller_function>/<function_parameter_1>/>/<function_parameter_2>…

В предыдущем разделе мы увидели, как удалить index.php из формата адреса. В результате этот шаблон транслируется в ссылки URL подобные этой:

http://www.yourdomain.com/welcome/tester/1
Здесь, welcome это обрабатывающий класс (контроллер) для файла контроллера welcome.php. Внутри этого класс он вызовет функцию tester() и передаст ей ‘1’ в качестве параметра. Любые другие параметры могут быть переданы таким же образом, разделяя косой чертой.

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

3.2 Библиотеки

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

Загрузить библиотеку в CodeIgniter очень просто. Например, чтобы загрузить библиотеку базы данных, просто передайте эту строку своей модели или контроллеру (рекомендуется использовать модель, хотя и не обязательно в CodeIgniter):

$this->load->database();

Конечно, некоторые библиотеки и помощники на столько часто применяются, что удобнее делать их автозагрузку сразу при загрузке приложения. В качестве примера может быть библиотека базы данных, так как база данных это неотъемлемая часть любого современного веб-приложения и URL помощник, который может оказаться полезным при загрузке URL-адресов.
Чтобы установить автозагрузку библиотеки базы данных, откройте следующий файл:

nano application/config/autoload.php

После открытия измените строку:

$autoload['libraries'] = array();

На эту строку:

$autoload['libraries'] = array('database');

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

Аналогично для помощников замените эту строку:

$autoload['helper'] = array();

На эту:

$autoload['helper'] = array('url');

Теперь, когда вы знаете больше о MVC, надеемся вы сможете по достоинству оценить чудеса CodeIgniter.

Шаг 4 – Создание простого приложения с помощью CodeIgniter

И вот, от формальностей настройки мы добрались до самой интересной части руководства. На этом этапе нужно будет запустить свой CodeIgniter с изменениями, которые мы внесли на Шаге 2. Вам так же уже должно быть понятно, как работает Модель, Представление и Контроллер в CodeIgniter. В этом разделе мы будем применять эти знания в создании простого веб приложения на CodeIgniter.
Приложение будет очень простым по структуре: при помощи нашей модели мы будет доставать обзоры видео из нашей базы данных и показывать их в нашем представлении. Контроллер будет выполнять маршрутизацию запросов между моделью и представлением. Когда вы получите основы применения CodeIgniter, вы сможете построить более сложное приложение.

Step 4.1 Требования

Как уже говорилось во Вступлении к этому руководству, нужно, чтобы у вас были базовые знания MySQL. Для нашего простого приложения нам нужно будет создать таблицу с названием reviews и 3 колонки: id (primary key и самоинкрементирующееся), title и grade.

База данных MySQL для CodeIgniter

Эта таблица будет базой для нашего приложения, поэтому нужно её сделать прежде всего. Далее предоставить доступ CodeIgniter к вашей базе данных, следуя инструкциям из Шага 2. После создания таблицы, заполните её произвольными значениями.

Step 4.2 Модель

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

Модель располагается в каталоге applications/models CodeIgniter. Распределение по каталогам поможет избежать беспорядка в структуре приложения. Переходите в каталог и создавайте новый PHP-файл с названием reviews_model.php.

nano reviews_model.php

Как только создали, скопируйте в файл следующий код:

<?php
class News_model extends CI_Model {
}
?>

Как видите, класс модели News_model расширяет родительский класс CI_Model, предоставляемый CodeIgniter. Также обратите внимание, что первая буква названия класса должна быть заглавной – это требования CodeIgniter к именованию классов.

Теперь нужно загрузить библиотеку работы с базами данных, о которой мы говорили на Шаге 3. Это позволит с лёгкостью работать с базами данных. Вы можете использовать метод конструктора модели, который загрузит библиотеку при запуске. Для этого разместите следующий код в созданном выше классе:

public function __construct() {
$this->load->database();
}

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

public function get_reviews($id) {
if($id != FALSE) {
$query = $this->db->get_where('reviews', array('id' => $id));
return $query->row_array();
}
else {
return FALSE;
}
}

Метод, код которого приведен выше, принимает ID, как аргумент, и возвращает все данные из строки в таблице reviews, связанные в этим ID. Таким образом, этот метод будет вызываться каждый раз, когда мы запрашиваем обзор фильма.

Step 4.3 Контроллер

Мы позаботились о слое доступа к данным. Теперь нужно создать маршрут, чтобы, когда пользователь запрашивает обзоры видео, наше, ещё не созданное представление, было обеспечено данными, которые мы получили при помощи модели.

Для создания нового контроллера перейдите в каталог application/controllers и создайте там файл reviews.php. Помните: контроллер в CodeIgniter должен называться также, как и определяемый класс внутри файла.
После создания файла откройте его и вставьте такой код:

<?php
class Reviews extends CI_Controller {
}
?>

Всё, что нам потребуется, это спаковать данные, полученные нашей моделью и передать их представлению. Для этого создадим метод show(), который свяжет данные с вновь созданной структурой и загрузит их в представление.

public function show($id) {
$this->load->model('reviews_model');
$reviews = $this->reviews_model->get_reviews($id);
$data['title'] = $reviews['title'];
$data['grade'] = $reviews['grade'];
$this->load->view('movie_review', $data);
}

Массив $data – это ассоциируемый массив, с ключами title и grade, соответствующими значениям, полученным из базы данных. Этот массив передаётся в представление с именем movie_review и загружается для отображения.

Step 4.4 Представление

И наконец, мы создаёт представление, которое отобразить запрашиваемые отзывы о видео.

Войдите в каталог application/views и создайте там файл movie_review.php. Обратите внимание, что название файла должно совпадать с тем, которое вы сообщили контроллеру для загрузки (последняя строка метода show()). После создания файла скопируйте в него этот код:

<?php
print $title;
print $grade;
?>

Представление отображает название видео и отзыв из массива $data, переданного контроллером. Не обязательно говорить, что результат будет не особо привлекательным, так как мы не подключили никаких стилей для нашего представления. Конечно, вы можете добавить стили прямо здесь (что не очень рекомендуется) или подключить внешний CSS файл.

Наше пробное приложение готово. Вы можете запустить это приложение в браузере по адресу:

http://yourdomain.com/reviews/show/1

Это вызовет контроллер reviews, который мы создали на шаге 4.3 и вызовет его метод show() со входным параметром 1. Этот параметр принимается как идентификатор видео ID; что будет использовано, как запрос к базе данных для получения данных о видео с ID = 1. В результате, пользователь теперь может видеть название и отзыв первого в базе данных видео.

Заключение

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

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

Прочитав руководство и разобравшись в нём, вам станет яснее как, используя CodeIgniter, построить динамические, масштабируемые и выдерживающие нагрузку приложения быстрее, чем раньше, применяя всю мощность библиотек и помощников фреймворка. Мы надеемся, что смогли вам показать, как прост и одновременно функционален CodeIgniter и желаем вам успехов в вашем развитии как веб-разработчика и в частности продуктивной работы с PHP-фреймворками.

Добавить комментарий

Нажмите здесь, чтобы оставить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Присоединяйтесь к тысячам других подписчиков по всему миру

и получайте самые свежие руководства на вашу электронную почту

Пожалуйста, подождите...

Спасибо за подписку!

Начните экономить сейчас!

Хостинг и доменное имя от

руб.95
00