Почему фреймворк? Почему CodeIgniter?

В этой статье хотелось бы раскрыть два вопроса. Почему для создания сайтов лучше использовать фреймворк нежели писать самому на PHP. И почему из всех фреймворков я рекомендую Codeigniter?

Давайте начнем с того, для чего вообще люди начинают вдруг внезапно хотеть создавать сайты?Зачем? Наверняка эти люди не вскакивали одним прекрасным утром с кровати с криком «Хочу делать сайты!!». Всему есть причина.

Наверно в 90% случаев — это деньги.

сайты = деньги

Ведь умея делать сайты, можно делать их на заказ. Сейчас очень много веб-студий, которые этим занимаются и Вы наверняка видели их расценки :)

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

Причины могут быть на самом деле разные, но сейчас не про них.

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

Но этот этап заканчивается и хочется создавать более мощные и функциональные сайты и тратя на это гораздо меньше времени чем сейчас. Сколько Вы тратите времени на создание сайта — я точно сказать не могу, но когда я писал на PHP я убивал просто кучу времени. Я 4 месяца не мог запустить проект из-за нехватки знаний, вечных проблем и так далее. И причем тратишь время в большей степени на поиск, чем на само решение.

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

Так же каша из HTML, PHP и MySQL запросов в одном файле очень надоедает и очень сложно не запутаться там.

Фреймворк — это уже готовая структура, скелет Вашего сайта, где разложено все по полочкам. Нету никакой каши. При этом Вы используете этот скелет по Вашему усмотрению и создаете действительно уникальный сайт. Фреймворк — Вас ничем не ограничивает, как к примеру CMS, поэтому многие не любят CMS из-за этой не уникальности. Хотя и на CMS при наличии знаний можно создать уникальный по внешнему виду сайт :)

Но это не все. Все проблемы, задачи которые Вы встречали в веб-разработке, например:

  • создание корзины товаров
  • создание капчи для комментариев
  • загрузка файлов на сервер
  • постраничная навигация
  • проверка данных
  • создание миниатюр для изображений
  • нанесение водного знака на изображения
  • работа с сессиями
  • работа с куками

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

Так же создание регистрации, восстановление пароля, личного кабинета — тоже станет для Вас простым и понятным.

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

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

Почему же CodeIgniter?

Codeigniter

Когда я задался вопросом — «Как создавать функциональные и мощные сайты быстро?» решил попробовать какой-нибудь фреймворк. Гуглил — читал отзывы, сравнения фреймворков ну и в итоге выбрал CodeIgniter, и в этом  выборе ничуть не разочарован.

Какие плюсы имеет CodeIgniter?

Буду писать свое мнение и сравнивать с другими фреймворками я не буду, так как другие я не испытывал. Возможно в будущем испытаю :)

CodeIgniter:

Прост в установке.
Скачиваете, скидываете все содержимое архива в папку с проектом на локальном сервере и все, все работает.
Я пробовал установить Zend фреймворк, возможно самый популярный, у меня не вышло :) наверно сильно и не хотел я его установить :)

Имеет хорошую документацию.
Действительно документация у него отличная, реально научится пользоваться только по одной документации, так как расписано  все самое основное и грамотно, с примерами. Некоторые вещи можно просто скопировать из документации и вставить себе на сайт — и все будет работать :)
Помимо отличной официальной документации, можно найти так же русскую.

Мало весит.
Да, это тоже плюс. Весь фреймворк весит чуть больше 2мб.

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

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

Классные URL страниц.
Если при программировании на PHP многие привыкли к гигантским URL страниц со множеством параметров, то тут все выглядит аккуратно и красиво. Вместо «…?category=lessons&id=12..« будет так — «…lessons/12…«. 

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

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

Возможно этот список я еще дополню :)

Буду рад если кого-то сподвигнул перейти или хотя бы попробовать фреймворк CodeIgniter. Codeigniter действительно позволяет Вам легко и быстро создавать мощные и функциональные сайты. Так что действуйте :)

Интересно почитать Ваши комментарии на эту тему, Ваши мысли, идеи, в общем делитесь :)

Если урок Вам был полезен, нажмите на любую кнопку ниже— буду благодарен :) Всем удачи и следите за ходом событий ;)

Комменты

  • Дмитрий, вы правы, буду пробовать CodeIgniter, т.к столкнулся с проблемой ЧПУ URL…это действительно очень непонятная настройка сайта, перерыл весь google, но нашел только статьи которые надо очень долго учить, потому, что с первого раза ничего не получилось…

  • Здравствуйте !
    есть пару вопросов может кто посоветует….
    установил CI и притянул hmvk весчь очень удобная ну есть одно но мне нужно чтоб каждый модуль имел свою папку css и js так как у разных контролеров будут много своих видов и соответственно разных макетов и стилей также и эфектов js папки та создал и файлы тож а как вывести в head чет никак ….сразу подключать в шаблоне не подходит… нужно только чтоб в каждом виде был свой css и js ……пробовал в корень все нормально подключает ну хотелось бы порядок иметь типа
    modules
    content
    controlers
    models
    views
    css
    js
    galery
    controlers
    models
    views
    css
    js
    примерно так может кто сталкивался подскажите? буду примного благодарен!
    Виктор!

  • Здравствуйте Дмитрий!
    такой вопрос как вы побороли пробелы в запросе
    к примеру так?
    http://2develop.ru/codeigniter/ potchemu-freymvork-potchemu-codeigniter.html
    У вас я все норм вижу нашли решение !

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

    • нашлось решения сделал так в конфиге

      $config[‘permitted_uri_chars’] = ‘a-z а-я 0-9_\+ — % &nbsp’ ;

      также закрылся вопрос с кириллицей

      может кому и пригодиться!

  • Zdrastvuite . kto mozhet pomoch sdelat «prostoi poisk» iz bazy dannyh na codeigniter? nikak ne mogu naiti v google kak delat poisk.
    s uvazheniem Timur

  • Я например, учу php, а не фреймоворк, но скажу, что те кто учит чистый php у тех луче освоиться материал программирования. Если вы будите знать только основу php, то бесполезно переходить на фреймоворк, поскольку там надо знать ООП без которого не обойтись там. А вообще, фреймоворк это готовый каркас или если конкретнее, то это огромная библиотека, но по статистики мы не используем и 10% этой библиотеки из 100. Теперь делаем выводы, относительно используемой библиотеки — фреймоворка та часть, которая не используется только вредит, притормаживая сайт, а как мы знаем, чистый код быстрый код. С нуля если сайты писать, то они будут работать на 70% быстрее от какой-то cms или фреймоворка.

  • Uvajaemiy Dimitriy, u menya voznikla problema ‘redirect’om, iz videouroka comment, u menya ne rabotayet redirect posle vstavleniya baza dannix,
    oshibka takaya:

    A PHP Error was encountered

    Severity: Warning

    Message: Cannot modify header information — headers already sent by (output started at Z:\home\localhost\www\myblog\system\application\models\rules_model.php:16)

    Filename: helpers/url_helper.php

    Line Number: 541

    • Дмитрий Валак: 06-07-2013 в 9:23

      Здравствуйте. Скорее всего, Ваш файл сохранен с меткой ВОМ. Уберите ее.

  • Здравствуйте Дмитрий!
    Подскажите пожалуйста, в каких файлах необходимо изменять название месяцев и дней недели с английского на русский язык в классе Calendaring, а также в к началу и в конец при постраничной навигации. Также непонятно как менять текст с английского на русский при валидации форм.
    И еще проблема: где найти документацию по Codeigniter 2. Сайт xvin.ru не работает, на сайте http://www.code-igniter.ru документация по версии 1.6.1 в нем нет класса Shopping cart.

    • Дмитрий Валак: 25-03-2013 в 11:05

      Здравствуйте.

      Изменять языки разных библиотек Вы можете в папке system->languages и там будет 1 папка, хранящая языковые настройки для библиотек, у меня это папка english.
      Скопируйте данную папку и назовите ее, например, ru и там можете переводить нужные вам файлы. Так же нужно будет сделать загрузку этой папки с языками по умолчанию. Перейдите в папку application->config->config.php и там найдите строку $config[‘language’] = ‘english'; и вместо, в данном случае, english, напишите название Вашей новой папки с языками, например ru.

      Смотрите документацию на codeigniter.com

      • Здравствуйте, подскажите как изменить текст названия поля валидации в зависимости от языка. Небольшой пример из файла file_model.php Не могу вместо слова «ссылка» подставить переменную, которая зависела бы от языка.
        public $edit_rules = array
        (
        array
        (
        ‘field’ => ‘url_banner’,
        ‘label’ => ‘ссылка’,
        ‘rules’ => ‘required|xss_clean’
        )
        );

        • Дмитрий Валак: 24-02-2014 в 22:10

          А если объявить правила прямо в контроллере?

          • Алексей: 25-02-2014 в 20:21

            Спасибо. В контроллере работает.
            Еще нашел более простой способ: в модели добавить префикс «lang:» , вот пример:
            public $edit_rules = array
            (
            array
            (
            ‘field’ => ‘url_banner’,
            ‘label’ => ‘lang:link_name’,
            ‘rules’ => ‘required|xss_clean’
            )
            );

            а в языковом файле уже создать $lang[‘link_name’] = ‘Ссылка';
            и не забыть его загрузить $this->lang->load(‘file_name’);

  • Здравствуйте, Дмитрий! Как в корзине товаров — класс shopping cart поменять валяюту? По умолчанию там доллар. А если мне нужно евро или гривны. Заранее спасибо!

    • Дмитрий Валак: 22-03-2013 в 19:58

      Здравствуйте.
      Всмысле там по умолчанию доллар? Пишите цены в какой угодно валюте. А вместо знака $ поставьте то, что вам нужно в HTML.

  • Здравствуйте, Дмитрий! Подскажите пожалуйста, как вырезать из url индексную страницу (index.php)? Менял в конфиге $config[‘index_page’] = »; и $config[‘uri_protocol’] = ‘PATH_INFO'; не помогает. В htaccess делал, как в документации
    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    Как я понимаю, тут регулярными выражениями задаётся переадресация. Не помогает. Вместо images указывал пробывал папку с контроллерами и пробывал так: RewriteCond $1 !^(index\.php|aplication|robots\.txt). Пишет страница не найдена. А в первом случае RewriteCond $1 !^(index\.php|images|robots\.txt) просто перекидывает на localhost и всё.

    Как решить этот вопрос? Помогите, пожалуйста!

    • Дмитрий Валак: 21-03-2013 в 13:56

      Здравствуйте. Попробуйте в файле .htaccess прописать вот что:
      RewriteEngine on
      RewriteCond $1 !^(index\.php|resources|robots\.txt)
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]

  • Я только начал изучать PHP и его структуру. Вы советуете переходить на фреймворк, но а как же быть новичкам? Ведь некоторые ещё не очень хорошо даже PHP знают. Может сначала им самим надо покопаться даже в том же своём коде, что бы как-то структурировать свои знания, или с Codeigniter всё легко?
    Кстати уроки у вас отличные. Жду новеньких. Хотелось бы увидеть урок по преобразовани ссылок из длинных в нормальные с слешами (ЧПУ вроде называются)

    • Дмитрий Валак: 14-03-2013 в 19:52

      Здравствуйте.
      Возможно Вы правы. Люди разные и все по разному воспринимают информацию.
      Лично я, лучше стал понимать php после изучения фреймворка.

  • очень интересно. посмотрел Ваш курс по PHP — понравился )) думаю Codeigniter будет не менее интересный ))
     

  • Дмитрий, можно ли ждать от Вас уроков "Codeigniter + Ajax"? 
    Используете ли Вы сам такую связку?
    Спасибо.

  • http://raponly.ru/ из url-а вырезали бы index.php

  • Дмитрий в не могли бы добавиться в скайп ко мне что бы я мог на прямую обращаться к вам по поводу codeigniter? вот скайп andrey75454

  • здраствуйте! во время прохождения вашего курса по codeigniter у меня возник вопрос.суть проблемы такова когда я из бд пытаюсь вытащить категории для сайта через цикл foreach то у меня выводит закорючки , но в тоже время когда я без цикла вывожу категорию то все выводится нормально , не могу понять в чем проблема . 
    вот цикл foreach
    <div class="right_title">Статьи</div>
            <div class="right_items">      
                <?php foreach($categories as $item):?>
                    <div><a href="#"><?=$item['title'];?></a></div>
                <?php endforeach; ?>
            </div>  
              
            
            </td>
          </tr>
        </table>
     
    а вот вывожу без него и выводится в нормальной кодеровке 

    <div class="right_title">Статьи</div>
                <div class="right_items">    
                    
                                <div><a href="#"><?=$categories['title'];?></a></div>
                               
                     
                </div> 
                     
               
                </td>
              </tr>
        </table>

     

    что это может быть ?

    • Дмитрий Валак: 13-11-2012 в 19:19

      Не в цикле дело. Проверьте правильно ли Вы сделали запрос на выборку данных.

  • codeigniter как раз для новечка !!!

  • Не совсем лучший фрейворк, есть намного лучше, например, Kohana или Yii для более продвинутых.

    • Дмитрий Валак: 17-09-2012 в 8:58

      Каждому свое. Другие фреймворки пока не пробовал.

    • Не соглашусь с вами . не все так просто с разработкой на Kohana …
      мы тоже смотрели в его сторону но выбрали CI и вот почему!
      сначала перед выбором фреймворка надо учитывать все его особенности чтоб не потратить время в пустую и взвесить все плюсы и минусы …
      если в кратко то стремительное развитие Kohana сильно влияет на разработку сайтов и её частые обновления это серьезный минус ….и за которого приходится перерабатывать почти весь код на сайте и так из месяца в месяц…это огромный гемор …..прикиньте в место того чтобы развивать свою систему вы тратите уйму времени на то чтоб отловить все внесенные изменения в фреймворке ….вед чего больше всего ни хватает в CI это модульности а решается это очень просто прекруткой hmvk ну еще пару мелочей которые в принципе лучше самим реализовать
      на мой личный взгляд надо смотреть на стабильность фреймворка и что соответственно нам дает CI …иза чего и пришли к выводу что CI более подходит к нашим проектам и это ни сайты визитки …..а что насчет плюшек то лучше их прикрутить самим так как вам это нужно…и без закосов…..

  • Я занимаюсь построением сайтов на codeigniter, но после построения сайта я решил поставить ограниение — регистрацию, но в примере небыло такого чтобы при авторизации учётные данные хранились бы сессии. Можите дать какую то подсказку как сделать это при помощи "объектно орентированого программирования"?