• CodeIgniter Command Line library — небольшой ассистент для работы с CLI

      Как вы наверное знаете, в php есть интересная функция для обработки данных, поступающих из командной строки: getopt. Но есть одна маленькая проблема — она неправильно работает в CodeIgniter, да и не совсем удобная.

      А так как у меня было немного свободного времени, желание написать что-нибудь своё опен сорсное, попробовать в деле github (сижу на hg+bitbucket), и наконец сделать что-то полезное для тухнущего CodeIgniter и его сообщества, я решил написать свой костыль, призванный немного скрасить написание cli скриптов на данном фреймворке.
      Оно умеет самый минимум — искать заданные аргументы, производить их валидацию (если не указаны обязательные) и выводить подсказки по использованию вашего скрипта, а при желании легко может быть допилено для использования без привязки к CodeIgniter:


      Заинтересовавшимся добро пожаловать под кат!
    • Grocery CRUD, или как я облегчил себе жизнь на неделю

      Добрый день, ХабраСообщество!
      Уже почти месяц веду разработку проекта на CodeIgniter 2.0 и к середине написания столкнулся с проблемой при написании администраторской части. Так сложилось что с «CI» знаком уже более 2-х лет, и еще не разу CodeIgniter меня не подвел в своих возможностях.
      Сам проект у меня исчисляется 35 таблицами и писать администраторскую панель мне необходимо для «хомячков». Подсчитав приблизительные человеко-часы необходимые на разработку интерфейса + программной части, я пришел в дикий ужас. Энтузиазм немного поутих (проект мой личный). Вспоминая добрым словом хоть какой-то CRUD в старых версиях, я рискнул «спросить Гугл», авось повезет… И повезло!
      Читать дальше →
      • +11
      • 14,7k
      • 9
    • Эволюция ImageCMS или что нужно, чтобы стать серьезным конкурентом на рынке CMS

        Друзья, прошло уже 2,5 года, как мы выпустили в свет ImageCMS и за это время она существенно изменилась. Мы решили создать свой корпоративный блог на Хабре, чтобы держать вас в курсе наших новостей и предоставить более удобный способ следить за ходом развития системы для всех хабрапользователей.

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

        ImageCMS постоянно развивается и совершенствуется, регулярно выходят новые релизы, которые увеличивают удобство и быстроту работы системы. Для того, чтобы сделать систему еще более интересной для разработчиков, появится магазин модулей, шаблонов и плагинов, в котором наши партнеры смогут предлагать свои разработки. Мы считаем, что это станет серьезным шагом на пути развития нашей системы.
        Читать дальше →
      • Миграции баз данных — интеграция с вашим приложением

          Данная статья посвящена практическому использованию библиотеки Migraton, появившейся в обновлении CodeIgniter версии 2.1.0. Настоятельно рекомендую вам перед ознакомлением с данным материалом прочесть первую часть статьи, в которой говорится непосредственно о создании миграций.
          Читать дальше →
          • +16
          • 3,8k
          • 6
        • Миграции баз данных — обзор библиотеки и ее использование

            Как вы уже могли прочесть, недавно вышла новая версия CodeIgniter, одним из нововведений которого является библиотека Migration. Один из главных ее разработчиков, Phil Sturgeon был настолько воодушевлен удобством управления версиями баз данных для Rails, что решил создать аналог такого метода для CodeIgniter, и вот, в конце-концов вы можете видеть эту библиотеку в официальной поставке.
            Из этой статьи вы получите общее представление о миграциях, а также научитесь их создавать. Во второй же части, мы с вами увидим, как легко они могут быть интегрированы в ваше приложение.
            Данная статья будет полезна начинающим пользователям CodeIgniter, но я надеюсь что и более продвинутые коллеги узнают об этой чудесной библиотеке и подчерпнут для себя что-нибудь новое.

            Кроме всего прочего, данная библиотека совсем не сложна, и реализовать ее при желании для любой другой платформы не составит большого труда!

            Итак, если я сумел вас заинтересовать, то добро пожаловать под кат!
          • Использование драйверов в CodeIgniter

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

            Итак драйвер — это особый тип библиотеки, которая состоит из одного родительского класса и нескольких дочерних. Дочерние классы получают доступ только к родительскому классу, но не имеют доступа к свои собратьям. Термин «дочерний» на самом деле не наследует поля родителя, а лишь получает к ним доступ.

            Драйверы служат для разбиения ваших библиотек на отдельные классы и в CodeIgniter представляют собой реализацию структурного шаблона проектирования Декоратор.
            Читать дальше →
          • Codeigniter: делаем сессии наконец стабильными (прежде всего для авторизаций)

              Сессии в Codeigniter хороши всем. Правда, очень удобно сделаны, особенно когда вы храните сессии в БД (что я считаю единственно верным). Куки шифрованные, в куках ничего, кроме идентификатора нету. Они привязываются к user_agent и, опционально, к IP. Красиво, безопасно.

              Но есть у них очень существенный недостаток: жизнь сессии считается от поля last_activity. Это значит, что если у вас стоит expire сессии в двое суток, то при обращении к сессии, у которой last_activity < time()-172800, она ликвидируется и начинется новая. Следственно, для того что бы пользователям не приходилось каждый раз логиниться на сайт, last_activity нужно поддерживать в акутальном состоянии.
              Поле last_activity обновляется в двух случаях: когда вы записываете что-то новое в сессию, либо когда сессия обновляется (по-умолчанию каждые 5 минут, опять же, относительно last_activity; указывается в конфиге). И вот главная проблема в том, что при обновлении сессии меняется session_id и текущая сессия у пользователя сессия прерывается, стартует новая.

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

              Проблема «животрепещущая», о ней часто вспоминают на форумах Codeigniter, но толкового решения там нигде я так и не увидел.

              Но голь, как известно, на выдумки хитра, поэтому простое решение таки нашлось.
              Читать дальше →
            • Каркас для web-приложений, построенный на CodeIgniter

              image
              Наверняка, многие веб-программисты изучали и, может быть, даже использовали такой замечательный фреймворк как CodeIgniter. Мой выбор пал на него ввиду того, что у него самый низкий порог вхождения, он наиболее прост в изучении, хорошая документация, быстрый и т.д. и т.п. Для простых проектов самое «оно», чтоб попробовать свои силы именно как разработчик. Само собой, для более серьезных проектов лучше использовать более функциональные и навороченные фреймворки.

              Далее буду описывать, как я «апгрейдил» CodeIgniter, чтобы использовать этот каркас для разных проектов, т.к. базовый его функционал и примеры из документации, мягко говоря, очень простые, а в жизни всё гораздо сложнее. Итак, начнем-с.
              Читать дальше →
            • Интеграция шаблонизатора Twig в CodeIgniter 2

              Логотип CodeIgniterЛоготип Twig
              CodeIgniter — это небольшой и быстрый php фреймворк, с низким порогом вхождения. Хотя есть такие силачи как Yii, Symfony и Kohana, по непонятным причинам, все проекты пишу именно на нем. Всё бы хорошо, но есть у CI две довольно ощутимые проблемы: слабо развитый ActiveRecord и отсутствие шаблонизатора. Вторую проблему мы и решим.

              Почему Twig, а не SMARTY?


              Как по мне SMARTY — нечто большое, старое и страшное. С другой стороны — мощное и проверенное временем. Twig — молод, энергичен и вызывает доверие, так как встроен в Symfony, а у этого фреймворка довольно большое и активное сообщество. Хотя ещё вчера провели сравнение производительности в котором явно выиграл SMARTY, я решил попробовать Twig.

              C общей информацией закончили, переходим к сути — три простых шага для интеграции Twig в CodeIgniter 2:

              1. Переносим файлы Twig в CI


              Забираем стабильную версию Twig с gitHub'а
              github.com/fabpot/twig
              Извлекаем содержимое архива и переименовываем папку в Twig, переносим её в папку application/libraries в вашем CI.

              2. Связываем Twig с CI


              Забираем стабильную версию одноименной библиотеки Twig для CI, которая даст нам возможность вызывать Twig из контроллера.
              github.com/jamiepittock/codeigniter-twig
              Из архива берем папку application и копируем поверх папки application в вашем CI.

              3. Настраиваем пути Twig


              Открываем application/config/twig.php и меняем пути в соответствии с вашими настройками. Например, мне понадобилось изменить путь к кэшу
              $config['cache_dir'] = BASEPATH.'cache/twig';

              Читать дальше →

            Самое читаемое