CodeIgniter
Материал из Викиучебника
Code Igniter — фреймворк написанный на PHP для построения веб-приложений.
Классы Code Igniter:
Benchmarking
Назначение
- Функции CodeIgniter для измерения времени
Возможности:
- Установка именованной точки для измерения
- Получение времени прошедшего с установки определённой точки
- Получение времени прошедшего с момента старта
- Получение объёма использованной памяти
Пример кода:
<?php $this->benchmark->mark('code_start');//устанавливаем точку для замера времени //...код $this->benchmark->mark('code_end');//устанавливаем вторую точку echo $this->benchmark->elapsed_time('code_start', 'code_end');//вычисляем время выполнения кода и выводим на экран $this->benchmark->mark('dog'); //...код $this->benchmark->mark('cat'); //...код $this->benchmark->mark('bird'); // установили 3 точки для замера времени выполнения кода и далее выводим разницу времени по этим точкам echo $this->benchmark->elapsed_time('dog', 'cat'); echo $this->benchmark->elapsed_time('cat', 'bird'); echo $this->benchmark->elapsed_time('dog', 'bird'); ?>
Calendaring
Назначение
- Функции CodeIgniter для создания календарей
Возможности:
- Создание календаря на любую дату
- Вставка ссылок в даты календаря
- Вставка ссылок на предыдущий/следующий месяцы
- Установка параметров: первый день недели, режим отображения месяца, режим отображения дня.
- Вывод календаря на основе шаблона дизайна
<?php $this->load->library('calendar');// загружаем класс в контроллере echo $this->calendar->generate();// выводим календарь<br /> echo $this->calendar->generate(2006, 6); // выводим календарь на определенную дату ---- $prefs = array ( 'start_day' => 'saturday', 'month_type' => 'long', 'day_type' => 'short' ); // установка параметров для отображения $this->load->library('calendar', $prefs); echo $this->calendar->generate();// выводим календарь ?>
Config
Назначение
- Функции CodeIgniter для получения параметров конфигурации
Возможности:
- Загрузка основного/альтернативного файла конфигурации
- Получение значения параметра конфигурации
- Установка значения параметра конфигурации
<?php $this->config->load('new_file'); // загрузка конфигурационного файла new_file.php который лежит в папке /config echo $this->config->item('some_item'); // вывод переменной вашего конфигурационного файла new_file.php. $this->config->set_item('some_item', 'new item value'); //Установка нового значения параметра конфигурации ?>
Файл new_file.php:
<?php $config['some_item'] =”some text”; ?>
Database
Назначение
- Функции CodeIgniter для взаимодействия с БД
Возможности:
- Установка параметров соединения с сервером БД
- Подключение к БД
- Возможность подключения к множественным БД
- Формирование шаблона запроса
- Получение результата запроса в виде объекта
- Получение результата запроса в виде массива
- Получение первой, последней, определённой строки результата
- Получение количества строк в результате
- Получение количества полей в результате
- Получение количества строк, изменённых запросами INSERT, UPDATE и т. п.
- Получение общего количества строк в таблице
- Получение информации об используемом сервере БД
- Получение версии БД
- Получение текста последнего выполненного запроса к БД
- Создание запроса на основе массива переменных
- Поддержка объектно-ориентированного доступа к БД
- Поддержка транзакций в принудительном и автоматическом режимах
- Получение списка таблиц в БД
- Проверка существования определённой таблицы в БД
- Получение списка полей в таблице
- Проверка существования определённого поля в таблице
- Получение метаданных поля (имя, размер, тип, ключ)
- Вызов функций PHP для работы с БД с получением результата средствами CI
- Поддержка кеширования результатов запросов к БД
- Создание БД
- Удаление БД
- Получение списка БД сервера
- Вызов серверной процедуры оптимизации таблицы
- Вызов серверной процедуры восстановления таблицы
- Вызов серверной процедуры оптимизации БД
- Генерация CSV из результата запроса
- Генерация XML из результата запроса
- Создание/восстановление резервной копии БД или таблиц с архивированием
<?php $this->load->database(); // загружаем класс $query = $this->db->query('SELECT orderid, name FROM my_table'); // делаем запрос и возвращаем результат в виде обьекта foreach ($query->result() as $row) { echo $row->orderid . "<br />"; // выводим результат echo $row->name . "<br />"; } echo 'Total: ' . $query->num_rows(); // кол-во строк foreach ($query->result_array() as $row) { echo $row['title']; // вывод результата как ассоциативного массива echo $row['name']; echo $row['email']; } $row = $query->row(); // возвращает результат в виде обьекта выбирая только одну строку echo $row->orderid; $row = $query->row_array();// возвращает результат в виде массива выбирая только одну строку echo $row['orderid']; ?>
Назначение
- Функции CodeIgniter для работы с электронной почтой
Возможности:
- Отсылка сообщения
- Установка параметров сообщения
- Присоединение файлов к сообщению
- Пакетный режим рассылки
- Получение служебной информации почтового сервера
- Принудительное отключение переноса слов в части сообщения
<?php $this->load->library('email'); // загружаем класс $this->email->from('your@your-site.com', 'Your Name'); // от кого письмо $this->email->to('someone@some-site.com'); // кому письмо $this->email->subject('Email Test'); // тема письма $this->email->message('Testing the email class.'); // тело сообщения $this->email->attach('/path/to/photo1.jpg'); // вложение в письмо(attachment) $this->email->send(); //отправка сообщения ?>
Encryption
Назначение
- Функции CodeIgniter для криптографии
Возможности:
- Установка типа ключа шифрования
- Шифрование/дешифрование данных
<?php $this->load->library('encrypt'); // загружаем класс $msg = 'message'; // сообщение для кодирования $key = 'super-secret-key'; // ключ для кодирования и декодирования echo $encrypted_string = $this->encrypt->encode($msg, $key); // вывод закодированного сообщения при использовании $key echo "<br />" . $plaintext_string = $this->encrypt->decode($encrypted_string, $key); // вывод раскодированного сообщения ?>
<?php // Можно также использовать конфигурационную переменную $config['encryption_key'] задав в ней ключ для кодирования и декодирования. //Тогда второй параметр передавать не нужно. Например: echo $encrypted_string = $this->encrypt->encode($msg); echo $plaintext_string = $this->encrypt->decode($encrypted_string); ?>
File Uploading
Назначение
- Функции CodeIgniter для загрузки файлов
Возможности:
- Создание веб-формы загрузки фалов
- Установка параметров/ограничений
- Прием данных
В директории application/views/ создаем файл upload_form.php:
<html> <head> <title>Upload Form</title> </head> <body> <?=$error;?> <?=form_open_multipart('upload/do_upload'); ?> <input type="file" name="userfile" size="20" /> <br /><br /> <input type="submit" value="upload" /> </form> </body> </html>
В той же директории создаем файл upload_success.php:
<html> <head> <title>Upload Form</title> </head> <body> <h3>Your file was successfully uploaded!</h3> <ul> <?php foreach($upload_data as $item => $value):?> <li><?=$item;?>: <?=$value;?></li> <?php endforeach; ?> </ul> <p><?=anchor('upload', 'Upload Another File!'); ?></p> </body> </html>
В директории application/controllers/ создаем файл upload.php:
<?php class Upload extends Controller { function Upload() { parent::Controller(); $this->load->helper(array('form', 'url')); } function index() { $this->load->view('upload_form', array('error' => ' ' )); } function do_upload() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '900'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } } } ?>
В корне сайте, где находится файл index.php создаем директорию uploads для загрузки туда изображений.
И пробуем в строке броузера www.your-site.com/index.php/upload/
FTP
Назначение
- Функции CodeIgniter для работы с FTP
Возможности:
- Подключение к серверу FTP
- Передача файлов на сервер
- Получение списка файлов в каталоге
- Переименование, перемещение, удаление файлов на сервере
- Создание, удаление каталогов на сервере
- Установка атрибутов файла на сервере
- Синхронизация локального каталога с каталогом на сервере
<?php $this->load->library('ftp'); // подключаем библиотеку для работы с FTP $config['hostname'] = 'ftp.your-site.com'; // хост $config['username'] = 'your-username'; // имя пользователя $config['password'] = 'your-password'; // пароль $config['debug'] = TRUE; $this->ftp->connect($config);// соединяемся с хостом FTP $list = $this->ftp->list_files('/public_html/'); // выбираем листинг файлов в директории print_r($list); // выводим листинг файлов $this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775); //upload файла на сервер с указанием //режима передачи и прав на файл $this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html'); // перемещение файла $this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html'); // переименование файла $this->ftp->delete_file('/public_html/joe/blog.html'); // удаление файла $this->ftp->delete_dir('/public_html/path/to/folder/'); // удаление директории $this->ftp->mkdir('/public_html/foo/bar/', 0755); // создание директории $this->ftp->chmod('/public_html/foo/bar/', 0777); // меняем права на директорию $this->ftp->close(); // закрыаем соединение с FTP ?>
HTML Table
Назначение
- Функции CodeIgniter для создания таблиц HTML
Возможности:
- Генерация таблиц из результатов запросов к БД
- Установка параметров таблицы
- Генерация таблицы на основе шаблона дизайна
<?php $this->load->library('table'); // загружаем класс // формируем данные для отображения в таблице $data = array( array('Name', 'Color', 'Size'), array('Fred', 'Blue', 'Small'), array('Mary', 'Red', 'Large'), array('John', 'Green', 'Medium') ); echo $this->table->generate($data); // выводим таблицу ?>
Image Manipulation
Назначение
- Функции CodeIgniter для работы с изображениями
Возможности:
- Установка параметров преобразования
- Преобразование изображения — изменение размера, обрезка, поворот, наложение
- Автоматическое создание эскиза
- Поддержка наложения двух типов: текста и другого изображения
<?php $config['image_library'] = 'GD'; $config['source_image'] = 'test.jpg'; $config['create_thumb'] = TRUE; // для создания нового изображения под именем test_thumb.jpg $config['maintain_ratio'] = TRUE; $config['width'] = 575; // ширина будущего изображения $config['height'] = 550; // высота будущего изображения $config['x_axis'] = '200'; $config['y_axis'] = '160'; // координаты для обрезания изображения $config['rotation_angle'] = 'hor'; // угол поворота изображения $this->load->library('image_lib', $config); /* для поворота изображения */ $this->image_lib->initialize($config); if ( ! $this->image_lib->rotate()) { echo $this->image_lib->display_errors(); } /* для обрезания изображения*/ $this->image_lib->initialize($config); if ( ! $this->image_lib->crop()) { echo $this->image_lib->display_errors(); } /* для изменения размеров изображения*/ if ( ! $this->image_lib->resize()) { echo $this->image_lib->display_errors(); } ?>
Input
Назначение
- Получение/фильтрация данных
Возможности:
- XSS-фильтр
- Получение данных с фильтрацией: POST, cookie, SERVER
- Простая проверка адреса IP
- Получение данных о клиенте
<?php echo $this->input->post('some_data'); // вывод параметра переданного методом POST echo $this->input->post('some_data', TRUE); // Для проверки данных на атаку XSS нужно установить вторым параметром TRUE echo $this->input->cookie('some_data', TRUE); // вывод данных занесенных в куки echo $this->input->server('HTTP_HOST'); // вывод значения из массива $_SERVER echo $this->input->ip_address(); // вывод IP-адреса пользователя echo $this->input->user_agent(); // вывод информации о броузере пользователя ?>
Load
Назначение
- Функции CodeIgniter для загрузки компонентов во время выполения
Возможности:
- Загрузка классов, шаблонов, переменных, помощников, дополнений, сообщений и просто файлов.
<?php $this->load->library('email'); // загрузка библиотеки email.php из system/libraries $this->load->view('myfile'); // загрузка View-файла myfile.php из system/application/views $this->load->helper('file_name') // загрузка хелпера file_name_helper.php из system/helpers $this->load->plugin('file_name') // загрузка плагина file_name_pi.php из system/plugin $this->load->file('filepath/filename', true/false) // загрузка файла filename и вывод его в броузер $this->load->lang('file_name') // загрузка языкового файла $this->load->config('file_name') //загрузка файла конфигурации ?>
Language
Назначение
- Функции CodeIgniter для интернационализации
Возможности:
- Загрузка файла сообщений
- Получение текста сообщения по ключу
Output
Назначение
- Функции CodeIgniter для управления выводом
Возможности:
- Установка параметров заголовка
- Включение/отключение профайлера
- Непосредственная передача вывода
- Получение вывода
<?php $test = 'this is san'; //строка для вывода в броузер $this->output->set_output($test);?> //вывод строки непосредственно в броузер без вызова $this->load->view() ?> <?php $this->load->view('welcome_message'); //вывод страницы welcome_message.php в броузер $string = $this->output->get_output(); // получение в строку содержимого страницы ?> <?php $this->output->set_header("HTTP/1.0 200 OK"); $this->output->set_header("Cache-Control: post-check=0, pre-check=0", false); $this->output->set_header("Pragma: no-cache"); $this->load->view('welcome_message'); // отправка установленных параметров заголовков броузеру ?>
Pagination
Назначение
- Функции CodeIgniter для разбиения на страницы
Возможности:
- Установка параметров вывода
- Настройка дизайна блока выбора страниц
<?php $this->load->library('pagination'); // загружаем класс $config['base_url'] = 'http://www.your-site.com/index.php/test/page/'; //адрес страницы которая принимает параметры для навигации по сайту $config['total_rows'] = '200'; $config['per_page'] = '20'; $this->pagination->initialize($config); echo $this->pagination->create_links(); ?>
Вид навигации на странице:
" First < 1 2 3 4 5 > Last "
Session
Назначение
- Функции CodeIgniter для работы с сессиями
Возможности:
- Получение данных сессии
- Установка параметров сессии
- Добавление собственных данных в сессию
- Поддержка сессий в БД
<?php $this->load->library('session'); // загружаем класс $newdata = array( 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ); // определяем массив с параметрами для сессии $this->session->set_userdata($newdata); // записываем массив в сессию echo $session_id = $this->session->userdata('email'); // выводим параметр из записанной сессии ?>
Тrackback
Назначение
- Функции CodeIgniter для работы с трекбеками (уведомления между сайтами.
Используется преимущественно в блогах и в системах наподобие «послать ссылку другу»)
Возможности:
- Отсылка/приём трекбеков
- Поддержка трекбеков в БД
<?php $this->load->library('trackback'); $tb_data = array( 'ping_url' => 'http://some-site.com/trackback/456', 'url' => 'http://www.my-site.com/blog/entry/123', 'title' => 'The Title of My Entry', 'excerpt' => 'The entry content.', 'blog_name' => 'My Blog Name', 'charset' => 'utf-8' ); if ( ! $this->trackback->send($tb_data)) { echo $this->trackback->display_errors(); } else { echo 'Trackback was sent!'; } ?>
Template Parser
Назначение
- Функции CodeIgniter для работы с шаблонами страниц
Возможности:
- Загрузка шаблона
- Генерация вывода на основе шаблона
- Поддержка циклов в шаблоне
<?php $this->load->library('parser'); // загружаем класс $data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading' ); // массив с переменными для отображения $this->parser->parse('welcome_message', $data); // загрузка файла welcome_message.php в папке /view ?>
Пример файла welcome_message.php:
<html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> </body> </html>
Unit Testing
Назначение
- Функции CodeIgniter для тестирования
Возможности:
- Возможность тестирования функций на результат, тип результата
- «Ленивый» и «строгий» режим тестирования
- Возможность пакетного запуска тестов
- Возможность формирования отчёта по тестам
<?php $test = 1 + 1; // что проверяем $expected_result = 2; // с чем проверяем $test_name = 'Adds one plus one'; // имя теста echo $this->unit->run($test, $expected_result, $test_name); // вывод результатов теста на соответствие значений в виде таблицы echo $this->unit->run('Foo', 'Foo'); // сравнение на соответствие значений друг с другом echo $this->unit->run('Foo', 'is_string'); // сравнение на соответствие значения типу данных echo $this->unit->report(); // вывод результатов всех запущенных тестов в виде таблицы $res= $this->unit->result(); // вывод результата в виде массива print_r($res); ?>
URI
Назначение
- Функции CodeIgniter для работы с URI-адресами
Возможности:
- Получение значения сегмента по номеру
- Преобразование URI в ассоциативный массив и обратно
- Получение строки URI после имени сервера
- Получение количества сегментов
- Получение массива сегментов
<?php //Пусть адрес текущей страницы - http://www.your-site.com/index.php/news/local/metro/crime. Тогда... echo $product_id = $this->uri->segment(2); // вывод 2 сегмента страницы “local” echo $product_id = $this->uri->segment(2, 0); // вывод того же сегмента. Если его нет, то выводим значение по умолчанию (второй параметр) - “0”. $array = $this->uri->uri_to_assoc(3); echo $array['metro']; // вывод сегмента в виде элемента массива echo $this->uri->uri_string(); // вывод всех сегментов после index.php в виде строки $segs = $this->uri->segment_array(); print_r($segs); // вывод всех сегментов после index.php в виде массива ?>
User Agent
Назначение
- Функции CodeIgniter для получения информации о клиенте
Возможности:
- Проверка, является ли клиент: браузером, мобильным, роботом, рефералом
- Получение строки идентификации браузера, мобильного или робота, версии и платформы клиента, реферера, допустимых языков и кодировок.
<?php $this->load->library('user_agent'); // загружаем класс echo $this->agent->platform(); // вывод ОС пользователя echo $this->agent->browser(); // вывод броузера пользователя ?>
Validation
Назначение
- Функции CodeIgniter для проверки данных форм
Возможности:
- Установка правил проверки
- Каскадирование правил проверки
- Проверка данных формы
- Подключение функций подготовки/фильтрации данных перед проверкой
- Подключение собственных функций проверки
- Возврат формы в случае ошибки
- Установка индивидуальных сообщений об ошибках в данных
XML-RPC
Назначение
- Функции CodeIgniter для организации XML-RPC-сервера/клиента
Возможности:
- Установка метода обмена
- Приём/отсылка запросов
- Получение отладочной информации
Zip Encoding
Назначение
- Функции CodeIgniter для работы с ZIP
Возможности:
- Создание архива
- Добавление файлов/каталогов в ахрив
- Получение файлов/каталогов из архива
- Запись архива на сервере
- Передача архива клиенту
<?php $this->load->library('zip'); // загружаем класс $name = 'data.txt'; // имя файла который будет в архиве $data = 'A Data String!'; // данные которые архивируем $this->zip->add_data($name, $data); // добавляем данные в архив $this->zip->archive('my_backup.zip'); // создаем архив под именем my_backup.zip ?>
