CodeIgniter - Основные понятия
Контроллеры
Контроллер - это простой файл класса. Как следует из названия, он управляет всем приложением по URI.
Создание контроллера
Сначала перейдите к application/controllersпапка. Вы найдете там два файла,index.html а также Welcome.php. Эти файлы поставляются с CodeIgniter.
Сохраните эти файлы как есть. Создайте новый файл по тому же пути с именем «Test.php». Напишите в этом файле следующий код -
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
В Test class расширяет встроенный класс, называемый CI_Controller. Этот класс необходимо расширять всякий раз, когда вы хотите создать свой собственный класс контроллера.
Вызов контроллера
Вышеупомянутый контроллер можно вызвать по URI следующим образом:
http://www.your-domain.com/index.php/test
Обратите внимание на слово «test»В приведенном выше URI после index.php. Это указывает имя класса контроллера. Поскольку мы дали имя контроллеру «Test", мы пишем "test»После index.php. Название класса должно начинаться сuppercase letter но нам нужно написать lowercase letterкогда мы вызываем этот контроллер по URI. Общий синтаксис для вызова контроллера следующий:
http://www.your-domain.com/index.php/controller/method-name
Создание и вызов метода конструктора
Давайте изменим указанный выше класс и создадим еще один метод с именем «hello».
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
Мы можем выполнить вышеуказанный контроллер следующими тремя способами:
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
После посещения первого URI в браузере мы получаем результат, как показано на рисунке ниже. Как видите, мы получили результат метода «index”, Даже если мы не передали имя метода в URI. Мы использовали только имя контроллера в URI. В таких ситуациях CodeIgniter вызывает метод по умолчанию «index».
Посещая второй URI в браузере, мы получаем тот же результат, что и на картинке выше. Здесь мы передали имя метода после имени контроллера в URI. Поскольку название метода - «index”, Мы получаем тот же результат.
Посещая третий URI в браузере, мы получаем результат, как показано на рисунке ниже. Как видите, мы получаем результат метода «hello"Потому что мы прошли"hello"В качестве имени метода после имени контроллера"test»В URI.
Что следует помнить
Имя класса контроллера должно начинаться с заглавной буквы.
Контроллер должен называться строчными буквами.
Не используйте то же имя метода, что и у родительского класса, так как это переопределит функциональность родительского класса.
Просмотры
Это может быть простая или сложная веб-страница, которую может вызывать контроллер. Веб-страница может содержать верхний колонтитул, нижний колонтитул, боковую панель и т. Д. Просмотр не может быть вызван напрямую. Давайте создадим простой вид. Создайте новый файл вapplication/views с именем «test.php»И скопируйте приведенный ниже код в этот файл.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Измените код application/controllers/test.php файл, как показано ниже.
Загрузка представления
Представление можно загрузить с помощью следующего синтаксиса -
$this->load->view('name');
Где имя - это визуализируемый файл представления. Если вы запланировали сохранить файл представления в каком-либо каталоге, вы можете использовать следующий синтаксис -
$this->load->view('directory-name/name');
Нет необходимости указывать расширение как php, если не используется иное, чем .php.
Метод index () вызывает метод представления и передает «test» в качестве аргумента методу view (), потому что мы сохранили кодировку html в «test.phpФайл под application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
Вот вывод вышеуказанного кода -
Следующая блок-схема иллюстрирует, как все работает -
Модели
Классы моделей предназначены для работы с информацией в базе данных. Например, если вы используете CodeIgniter для управления пользователями в своем приложении, тогда у вас должен быть класс модели, который содержит функции для вставки, удаления, обновления и извлечения данных ваших пользователей.
Создание класса модели
Классы моделей хранятся в application/modelsкаталог. В следующем коде показано, как создать класс модели в CodeIgniter.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Где Model_name - это имя класса модели, который вы хотите предоставить. Каждый класс модели должен наследовать класс CI_Model CodeIgniter. Первая буква класса модели должна быть заглавной. Ниже приведен код класса модели пользователя.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Вышеупомянутый класс модели должен быть сохранен как User_model.php. Имя класса и имя файла должны совпадать.
Модель загрузки
Модель можно вызвать в контроллере. Следующий код можно использовать для загрузки любой модели.
$this->load->model('model_name');
Где model_name - это имя загружаемой модели. После загрузки модели вы можете просто вызвать ее метод, как показано ниже.
$this->model_name->method();
Автозагрузка моделей
Могут возникнуть ситуации, когда вам понадобится какой-то класс модели во всем приложении. В таких ситуациях лучше автозагрузить.
/*
| ---------------------------------------------------------------
| Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
| $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
| $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();
Как показано на приведенном выше рисунке, передайте имя модели в массиве, который вы хотите автозагрузить, и она будет автоматически загружена, пока система находится в состоянии инициализации и доступна для всего приложения.
Помощники
Как следует из названия, это поможет вам построить вашу систему. Он разделен на небольшие функции для обслуживания различных функций. В CodeIgniter доступен ряд помощников, которые перечислены в таблице ниже. Мы тоже можем создавать собственных помощников.
Помощники обычно хранятся в вашем system/helpers, или application/helpers directory. Пользовательские помощники хранятся вapplication/helpers каталог и помощники системы хранятся в system/helpersкаталог. CodeIgniter сначала будет искать в вашемapplication/helpers directory. Если каталог не существует или указанный помощник не найден, CodeIgniter вместо этого будет искать в вашем глобальномsystem/helpers/ directory. Каждый помощник, будь то пользовательский или системный помощник, должен быть загружен перед его использованием.
SN | Имя и описание помощника |
---|---|
1 | Array Helper Файл Array Helper содержит функции, помогающие работать с массивами. |
2 | CAPTCHA Helper Файл CAPTCHA Helper содержит функции, помогающие создавать изображения CAPTCHA. |
3 | Cookie Helper Файл Cookie Helper содержит функции, помогающие работать с файлами cookie. |
4 | Date Helper Файл Date Helper содержит функции, которые помогают вам работать с датами. |
5 | Directory Helper Файл Directory Helper содержит функции, которые помогают в работе с каталогами. |
6 | Download Helper Помощник по загрузке позволяет загружать данные на рабочий стол. |
7 | Email Helper Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения для электронной почты см. Класс электронной почты CodeIgniter. |
8 | File Helper Файл File Helper содержит функции, которые помогают в работе с файлами. |
9 | Form Helper Файл Form Helper содержит функции, которые помогают в работе с формами. |
10 | HTML Helper Файл HTML Helper содержит функции, которые помогают в работе с HTML. |
11 | Inflector Helper Файл Inflector Helper содержит функции, которые позволяют вам менять слова на множественное, единственное, верблюжий регистр и т. Д. |
12 | Language Helper Файл Language Helper содержит функции, помогающие работать с языковыми файлами. |
13 | Number Helper Файл Number Helper содержит функции, помогающие работать с числовыми данными. |
14 | Path Helper Файл Path Helper содержит функции, которые позволяют вам работать с путями к файлам на сервере. |
15 | Security Helper Файл Security Helper содержит функции, связанные с безопасностью. |
16 | Smiley Helper Файл Smiley Helper содержит функции, позволяющие управлять смайлами (смайликами). |
17 | String Helper Файл String Helper содержит функции, помогающие работать со строками. |
18 | Text Helper Файл Text Helper содержит функции, помогающие работать с текстом. |
19 | Typography Helper Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами. |
20 | URL Helper Файл помощника по URL-адресу содержит функции, помогающие работать с URL-адресами. |
21 год | XML Helper Файл XML Helper содержит функции, помогающие работать с данными XML. |
Загрузка помощника
Помощник может быть загружен, как показано ниже -
$this->load->helper('name');
Где имя - это имя помощника. Например, если вы хотите загрузить помощник по URL-адресу, его можно загрузить как -
$this->load->helper('url');
Маршрутизация
CodeIgniter имеет удобную систему маршрутизации URI, так что вы можете легко перенаправить URL. Как правило, между строкой URL и соответствующим классом / методом контроллера существует взаимно однозначное отношение. Сегменты в URI обычно следуют этому шаблону -
your-domain.com/class/method/id/
В first segment представляет класс контроллера, который должен быть вызван.
В second segment представляет функцию или метод класса, который следует вызвать.
В thirdи любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы контроллеру.
В некоторых ситуациях вы можете захотеть изменить этот механизм маршрутизации по умолчанию. CodeIgniter предоставляет средство, с помощью которого вы можете устанавливать свои собственные правила маршрутизации.
Настроить правила маршрутизации
Есть специальный файл, в котором вы можете справиться со всем этим. Файл находится в application / config / routes.php. Вы найдете массив с именем $ route, в котором вы можете настроить свои правила маршрутизации. Ключ в массиве $ route будет решать, что маршрутизировать, а значение решает, куда маршрутизировать. В CodeIgniter есть три зарезервированных маршрута.
SN | Зарезервированные маршруты и описание |
---|---|
1 | $route['default_controller'] Этот маршрут указывает, какой класс контроллера следует загрузить, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, иначе по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу веб-сайта, чтобы она загружалась по умолчанию. |
2 | $route['404_override'] Этот маршрут указывает, какой класс контроллера следует загрузить, если запрошенный контроллер не найден. Он заменит страницу ошибки 404 по умолчанию. Это не повлияет наshow_404() функция, которая продолжит загрузку по умолчанию error_404.php файл в application/views/errors/error_404.php. |
3 | $route['translate_uri_dashes'] Как видно из логического значения, это не совсем маршрут. Эта опция позволяет вам автоматически заменять тире ('-') подчеркиванием в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам это нужно. Это необходимо, потому что тире не является допустимым символом имени класса или метода и вызовет фатальную ошибку, если вы попытаетесь его использовать. |
Маршруты могут быть настроены wildcards или используя regular expressions но имейте в виду, что эти настраиваемые правила маршрутизации должны идти после зарезервированных правил.
Подстановочные знаки
Мы можем использовать два подстановочных символа, как описано ниже -
(:num) - Он будет соответствовать сегменту, содержащему только числа.
(:any) - Соответствует сегменту, содержащему любой символ.
Example
$route['product/:num']='catalog/product_lookup';
В приведенном выше примере, если буквальное слово «продукт» находится в первом сегменте URL-адреса, а число - во втором сегменте, вместо этого используются класс «каталог» и метод «product_lookup».
Регулярные выражения
Как и подстановочные знаки, мы также можем использовать регулярные выражения в $route array keyчасть. Если какой-либо URI совпадает с регулярным выражением, он будет перенаправлен на часть значения, установленную в массиве $ route.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
В приведенном выше примере URI, похожий на products / shoes / 123, вместо этого будет вызывать «shoes»Класс контроллера и«id_123»Метод.