Обзор фреймворка CodeIgniter

в 11:24, , рубрики: codeigniter, php, обзор, Песочница, метки: , ,

Здравствуй всеми уважаемый хабрахабр. В этой статье речь пойдёт о замечательном PHP фреймворке CodeIgniter (сокращённо CI). CodeIgniter — популярный PHP фреймворк с открытым исходным кодом, позволяющий создавать многофункциональные и безопасные веб-приложения с MVC архитектурой. Разработан компанией EllisLab.
Зачем делать всё с нуля и  каждый раз переписывать по 1000 строк кода? Зачем тратить много времени на понятие собственного кода? Вам повезло если в вашем проекте мало строк кода и он хорошо документирован, но если у вас более 1000 файлов и в придачу код безобразно раскидан, то маленькое исправление может занять кучу времени. Выход есть! Рано или поздно вам придётся использовать фреймворк.

Так что же такое фреймворк

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

Личный опыт

Когда я начинал разрабатывать приложения на чистом PHP, то я тратил очень много времени, долго искал баг, переписывал много строчек кода. Позже я стал использовать функции, но и это тоже не спасало. Я очень долго гуглил и нашёл  идеальное решение — использование фреймворков В данный момент я использую CodeIgniter, о котором я сейчас расскажу.

Почему именно CodeIgniter

CodeIgniter —  это фреймворк написанный на PHP. Первый публичный релиз CI состоялся в 2006 году (7 лет назад). Он быстро набирал популярность благодаря своей простоте, и быстроте. На данный момент актуальная версия 2.1.3. CodeIgniter использует MVC архитектуру, что позволяет всё разложить по полочкам. Ниже вы можете увидеть процесс работы CI. Имеет поддержу библиотек, хелперов, хуков. Также имеется встроенная система кэширования.

Обзор фреймворка CodeIgniter

И так о плюсах CodeIgniter

Отличная и понятная документация

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

Не требует большое количество ресурсов

CodeIgniter может работать почти на всех хостингах с поддержкой PHP не ниже 5.1 версии. Благодаря своей грамотной структуре CI не нагружает систему и очень шустро работает. Сейчас я не буду сравнить скорость работы с другими фреймворками, так как холивары ни к чему.

Очень прост в использовании

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

Скорость генерации страниц.

CodeIgniter очень быстр в работе.  И это действительно так, а если вы не верите, то можете проверить сами.

Поддержка большого количества баз данных

При помощи своих встроенных драйверов CodeIgniter может работать с разными базами данных, таким как: MySQL, PostgreSQL, MSSQL, SQLite, Oracle. Также имеется PDO драйвер, что крайне удобно. В CI реализован  шаблон проектирования ActiveRecord для работы с базами данных.

Большое количество стандартных библиотек и классов

Чтобы вы не захотели бы сделать, CodeIgniter найдёт решение на большинство ваших идей. Перечислять все библиотеки, хелперы и классы я не буду, так как их очень много. Но перечислю которыми пользуюсь я: pagination, captcha_helper, form validation, xmlrpc, email, url_helper, security_helper.

Множество ресурсов по CI.

В интернете существует огромное количество сайтов, посвящённых CodeIgniter. Так что найти библиотеки сторонних разработчиков или найти ответ на свой вопрос по CI не составит большого труда. Ниже в статье будут ссылки на различные ресурсы.

Минусы CI

Слабая система кэширования

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

Плохой стиль написания

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

Нету паттерна Registry

Из-за отсутствия паттерна Registry приходится писать довольно глупую вещь "$CI = &getInstance();"  для доступа библиотек к ядру фреймворка.

Примеры кода

Чтобы вставить код в базу данных потребуется всего несколько строк

$insert = array(
'title' => 'Обзор CodeIgniter' ,
'author' => 'Mister Yio' ,
'text' => 'BlaBlaBla'
);//Массив с элементами для записи
/*Это запись равносильна INSERT INTO posts (title, author, text)
VALUES ('Обзор CodeIgniter', 'Mister Yio', 'BlaBlaBla');*/
$this->db->insert('post', $insert);
return $this-db->insert_id();//Возвращает id последней добавленной записи

Также легко получить данные и передать их виду

public function getSingl($name){
$this->db->where('name', $name);//Генерирует WHERE name="$name"
$this->db->select('title, author, text');//Генерирует SELECT title,author,text
$query = $this->db->get('posts');//Посылает запрос к базе данных

foreach($query->result_array() as $row){
 $data[] = $row;
 }
$this->load->view('blog',$data);//Вызываем вид и передаем массив с полученными элементами элементами
}

Ниже приведёна стандартная модель для работы с базой данных

<?php
class Model_posts extends CI_Model{
 /**
 * Select all post on database.
 * @return array
 */
 public function getAll(){
 $query = $this->db->get('posts');//генерирует запрос SELECT * FROM posts
 if($query->num_rows() > 0){
 return $query->result_array();//Возвращаем массив с полученными данными
 }
 }

 /**
 * Select singl post on database
 * @param integer $id
 * @return array
 */
 public function getOne($id){
 if(!is_integer($id))//Если передано не число то возвращаем предупреждение
 return 'Передан неверный идентификатор записи';
 $this->db->where("id",$id);
 $query = $this->db->get('posts');//Генерирует SELECT * FROM posts WHERE id="$id"
 if($query->num_rows() > 0){
 $data = $query->result_array();
 return $data;//Возвращаем массив с полученными данными
 }else{
 show_404();//Если записей не найдено показываем ошибку 404
 }
 }

 /**
 * Insert post on database
 * @param array $data
 * @return interger insert_id
 */
 public function add(array $data){
 $query = $this->db->insert('posts', $data);
 return $this->db->insert_id();//Возвращаем id последний добавленной записи
 }

 /**
 * Delete post on database
 * @param integer $id
 * @return integer
 */
 public function delete($id){
 if(!is_integer($id))
 return 'Передан неверный идентификатор записи';
 $this->db->where('id',$id);
 $this->db->delete('posts');
 return "Запись $id была удалена";
 }
}

?>

Проекты основанные на CodeIgniter

На CodeIgniter основано большое количество cms и скриптов. Самые известные: MaxSite CMS, ImageCMS, CI-CMS, Blaze. (Когда-нибудь этот список пополнится мной)

Автор: deWeb

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js