Фреймворк Kohana — впечатления от использования

    Приветствую тебя, Хабрачеловек.

    KohanaПолторы недели я пишу небольшой проект на Kohana. Сегодня решил немного рассказать об этом замечательном PHP-фреймворке и некоторых его особенностях, а также поделиться субъективными впечатлениями от работы. Надеюсь, кому-нибудь этот пост окажется полезен, особенно учитывая тот факт, что информации о Кохане в сети пока очень мало.

    Итак.

    Историческая справка


    Kohana — PHP-фреймворк, основанный на архитектуре MVC. Создан быть легким, быстрым и простым в использовании.

    Появился как альтернативная ветка CodeIgniter. В момент появления назывался Blue Flame, позже был переименован в Kohana, что в переводе с языка американских индейцев Сиу означает быстрый. Основной причиной появления стало недовольство пользователей скоростью устранения ошибок разработчиками CodeIgniter. А также переход к более открытой для общественности модели разработки.

    К положительным сторонам можно отнести


    • На редкость качественный ООП код
    • Использование возможностей PHP 5 с умом и по-максимуму
    • Высокая производительность
    • Небольшой размер самого фреймоворка
    • Скорость освоения и простота использования

    Среди недостатков я бы выделил


    • Слабое распространение, небольшое комьюнити
    • Не очень качественная документация
    • Небольшой набор библиотек в комплекте (впрочем, необходимый минимум вроде присутствует)
    • Сыроватость некоторых мелочей (в частности, я столкнулся с небольшими проблемами при использовании префиксов БД)

    Совсем субъективно


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

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

    Kohana на борту имеет простенькую ORM систему. Изначально я решил использовать ее в проекте, над которым работаю, но позже от нее пришлось отказаться даже несмотря на необходимость переписывать все модели. Это связано с низкой скоростью работы и малой гибкостью встроенной ORM. Вместо нее я использовал Auto_Modeler — очень удобную библиотечку для быстрого создания базового функционала моделей.

    Общие впечатление от работы с Коханой я бы оценил на пять с минусом. Если кто-то находится в поисках небольшого, быстрого и удобного PHP-фреймворка — смело рассматривайте Кохану, как очень достойный вариант.

    В заключении


    Если кого-нибудь заинтересовал этот фреймворк — пишите в комментах. Будут желающие — постараюсь периодически выкладывать на Хабре посты на эту тему. Материалов по Кохане очень немного и всегда найдется о чем написать, главное чтоб читатели были :-)

    Чего почитать


    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 79

      +5
      Вы меня убедили :)
        +25
        С украинского кохана — любимая… А на Гаваях есть похожее слово kahuna, означает «семья»… А теперь ещё и «быстрый»
          +3
          Скажу сразу, я не силен в украинском. Но слышал, что «кохатися» — любить во вполне определенном смысле. :)
          Поправьте меня, кто лучше знает.
            +14
            В украинском есть два слова: «любити» и «кохати».
            Для упрощения у нас говорят так: «люблю я жарену картоплю, а кохаю — жінку».
              +10
              То есть я не ошибся насчет «кохати».
              А как будет называться процесс работы с фреймворком Кохана? Кохаться? :)
              Что-то в этом есть… :)
                +8
                Я когда пару дней назад услышал про этот фреймворк здесь, тоже в позитиве пребывал! ;)

                Кохати — любить человека.
                Кохатись — все верно вы поняли… ;)

                Хороший анекдот, тока без обид!!! Я прошу… ;)

                — Куме, а знаєте як москалі називають наше шалене, палке та безмежне кохання?
                — Як?!?
                — Бли-и-изость!
                  +1
                  Ага :-)
                  Что интересно, у официального сайта есть версия на польском языке, а как тут уже в комментах написали, похожие слова есть в польском. То есть панове будут понимать название процесса на родном языке. :)

                  Впрочем бывают такие чудеса. Есть такой замечательный фремворк Zope. И звучание его названия по-русски на все 200% оправдывается :)

                  Какие обиды? :)
                  Ведь есть «Пы-ы-ы-ы-во». :)
                    +4
                    А знаетэ як воны наш борщ называють? Пе-е-ервое…
                      +1
                      ладно ладно, пошутили и хватит! ;)
                  +6
                  смажену :)
                    +4
                    Позор мне!!! Точно!
                  0
                  Вполне возможно, что это украинский новояз :)
                    0
                    Вы ошибаетесь. Это не новояз.
                    +1
                    в том же смысле в котором в русском «заниматься любовью»
                    0
                    От польского kocham = любить (а, кстати, lube = нравиться)
                      +4
                      Поправочка: kocham = люблю, kochać = любить. А вообще это слово украино-белорусско-польское.
                    +2
                    У меня тоже весьма положительное впечатление о Кохане.
                    По сравнению с Codeigniter'ом качество кода самого фреймворка заметно выше. Так же очень понравилась система хуков.
                      +2
                      Только вчера писал пост-вопрос, и ваш, прямо по каждой мелочи подходит как ответ! Это судьба?
                      (для интереса — прочитайте его)
                      Обязательно попробую этот фреймворк.
                        +2
                        Да, и конечно же продолжайте писать! Тем более если маленькое коммунити и не качественная документация, то ваш материал будет очень ценен (по крайней мере для начинающих).
                        Как пожелание — лучше на примере разработки какого-нибудь несложного проекта с обыденным функционалом.
                          +5
                          С деревней скрытого листа Konoha не имеет ничего общего. Зеленый цвет тут вообще случайно )
                            0
                            лично мне не понравилось, ч то валидация данных проходит во view. еще больше не понравилось, что _формы_ можно и, вроде как приветствуется, создавать в контроллере… каша какая-то
                              +2
                              Валидация не во вью, откуда такая информация?
                              Я вот тоже терпеть не могу генерацию HTML в контроллере и неиспользую. Генерация форм — это сторонняя библиотека использующая класс Validation, она даже в базовую поставку не входит.
                                –1
                                честно скажу, уже не помню, просто отложилось в голове такое, возможно, там были неудачные примеры
                                помню про Forge(вроде так) класс, который юзали в контроллере
                                и хелпер Validation который проверял данные именно во вью
                                  +2
                                  Forge — это формогенератор, в стандартную поставку он не входит и использовать его — дело вкуса (я не использую). Validation — это класс используемый в контроллере, хелпером он не является и полностью отделен от вью. Даже сообщения об ошибках он содержит во внешних ленгфайлах.
                                    0
                                    К слову сказать, в CI нет встроенной поддержки форм, что очень непривычно после использования Zend Framework.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      ну, перепутал, значит, валидация идет в котнтроллере, что все равно неправильно, на мой взгляд, т. к. должно происходить в модели
                                        0
                                        Можно и в модели. Посмотрите метод validate() в ORM.
                                        0
                                        расскажите, если не трудно, что за такие ленгфайлы и в чем их преимущество перед переменными сессии?
                                          +3
                                          Ленгфайлы — это файлы хранящие локализованные строки. Например сообщения об ошибках заполнения формы. Для каждого языка — свой набор файлов. При таком подходе в теории перевод сайта на несколько языков — плевое дело.

                                          В чем их преимущество над переменными сессии никто объяснить не может, но оно безусловно есть :-)
                                            0
                                            спасибо, буду знать теперь как называть файлы локализации;)
                                        0
                                        Validation это не хелпер, поэтому его рекомендуется использовать только в контроллере или модели.
                                        Forge уже давно выкинут с фреймворка, это сторонний модуль.

                                        PS: Идеология хелперов коханы и CI в том, что их можно использовать везде в view, контроллере и модели.
                                    +1
                                    Люблю читать статьи про фреймворки. Плюсик вам и топику.
                                      0
                                      интересный фрэймворк…
                                        0
                                        Это вещь, пойду читать дальше.
                                          +1
                                          Отличный фреймворк, использую его в своейм проекте который плавно приближается к альфобете. Единственно, чего не хватает так это комьюнити, особенно русскоязычного. Если у кого-то возникнет желание обменятся опытом, буду очень рад рассказать о всех подводных камнях которые я успел надыбать и узнать для себя что нибудь новенькое.
                                            +1
                                            Будем русскоязычное комьюнити формировать в блоге на Хабре. Присоединяйтесь :-)
                                              –1
                                              Зарегил новую группу groups.google.com/group/kohanaphp
                                              можно общаться там.
                                                0
                                                Я как увидел эту статью сразу присоеденился.
                                              0
                                              Использую полтора месяца, все отлично, полет нормальный.
                                              Нравится, что kohana нацелен именно на использование новых фич php. В 2.3 ввели новый механизм хранения и автоподгрузки классов, теперь при релизе php5.3 легко добавить namespaces в существующий код.

                                              Если не хватает встроенного функционала всегда можно расширить класс, или вообще заменить стандартные драйвера на свои (версия 2.3, доступна в транке).
                                              Ошибки фиксят очень быстро, на форуме оперативно отвечают на любые вопросы.
                                              Рекомендую использовать именно версию с транка, т. к. по сравнению с 2.2 в ней много нововедений (структура директорий, новый механизм роутеров).

                                                0
                                                Насчет форума, я бы так не сказал, недавно у меня были проблемы с кешированием, мучался пару дней в поисках решения, пока мне отвечают. В итоге оказалось что в версии 2.1 просто забыли заполнить в нужном месте переменную вот у меня ничего и не работало. Этого бага нету в 2.2 но никто и не шевельнулся на форуме.
                                                  0
                                                  2.1 уже не поддерживается. Рекомендуется переходить на 2.2. Даже есть в вики мигрейшн гайд.
                                                +2
                                                Обозреватели фреймворков присваивают одни и те же преимущества. Абсолютно каждый разработчик очередного FW отмечает быстроту, удобство, гибкость и т. п. Но при этом ведь ничего принципиального нового не придумали. Вот и Кохана — очередная попытка изобрести велосипед. Не вижу в этом фреймворке реальных преимуществ перед конкурентами.
                                                  0
                                                  Как говорится, на вкус и цвет…
                                                  0
                                                  Есть ли и как реализована поддержка связей между моделями 1-to-many, many-to-many? (кейковские hasMany, BelongsTo, hasManyAndBelongsTo)
                                                    0
                                                    Есть такое. Посмотрите system/libraries/ORM.php.
                                                    Походу политика ORM содранная с Ruby.
                                                    0
                                                    А кто-нибудь уже в нем ковырялся?
                                                    Подскажите, пожалуйста, в коде прослеживается постоянный вызов класса View (new View('template')).
                                                    Но самого класса с таким имененем я не нашёл (только View_Core).
                                                    В чем подвох?
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        Спасибо
                                                          +2
                                                          3.14дец. после этого слабо верится в хороший ООП во фреймворке.
                                                            0
                                                            может быть нельзя назвать это «хорошим ооп», зато позволяет расширять существующие классы не исправляя при этом написаные код(в данном случае сам фреймворк).
                                                              0
                                                              вот это и надо записывать в плюсы, а наличие ООП мне уже давно не говорит о качестве :(
                                                              я вот прочитал статью, но так и не понял что из себя представляет фрейморк, какие у него плюсы, кроме того, которые обещает любой фреймворк :) Про orm вовсе непонятно, что там сть, хотя этот вопрос интресовал меня больше всего, это его осноное отличие от CI из коробки.
                                                                0
                                                                отличие от CI(не вдаваясь в подробности) — использование php5 и понятный код.
                                                                  0
                                                                  ну так на то он и фреймворк, чтобы было пофег что внутри и как написано, главное чтобы апи было удобное. я вполне удачно совмещал фрейморк на php4 и код модулей на php5
                                                                  а то написано
                                                                  >Скорость освоения и простота использования
                                                                  а после
                                                                  > Вместо нее я использовал Auto_Modeler
                                                                  и в чём удобство? в том, что берём фреймворк и заменяем все бибилиотеки на свои?
                                                                  статья ниочём, а её заплюсовали. ежедневно открываю rss, а там 99% мусора :(
                                                          0
                                                          Да, ковырялся. До 2.2 на транке сидел, так иногда слал патчи.
                                                          Если будут вопросы — пишите в личку.
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                            +11
                                                            Вам ник очень подходит :-)
                                                            0
                                                            Заинтересовали, на досуге обязательно его рассмотрю со всех сторон.
                                                            Это я к тому что:
                                                            Если кого-нибудь заинтересовал этот фреймворк — пишите в комментах. Будут желающие — постораюсь периодически выкладывать на Хабре посты на эту тему.

                                                            Кстати, у вас тут опечатка.
                                                              0
                                                              На самом деле хотелось бы увидеть статью, в которой описано создание простого MVC-приложения на базе этого фреймворка. Я думаю, многим будет это интересно.
                                                              0
                                                              Мне тоже очень понравился фреймфорк. Только вот никак не получается найти что-то вроде каркаса для CMS — ведь как-то надо информацию в сайт загружать. Причем, хотелось не скаффолдинг, как у CI, а все же более-менее с поддержкой вложенной структуры. Думал, сам начать изобретать велосипед, так уже новый роутинг в версии 2.3 будет. Есть у кого что-то вроде каркаса для CMS?
                                                                +1
                                                                Есть скаффолдинг, не помню где и как его нашел, но точно не мой. arhivator.org/files/scaffolding.zip
                                                                  0
                                                                  Да, этот пример я видел. Идея достаточно хорошая. Жаль, что проект не развивается. Последний релиз аж 29 июня 2008.
                                                                0
                                                                Интересный фреймворк.
                                                                Спасибо, будем изучать!
                                                                  0
                                                                  Вопрос к тем кто использует кохану, нет ли у вас проблем с плохой производительностью на виртуальном хостинге?

                                                                  З. Ы. версия 2.2, хостинг — мастерхост, даже при использовании кеширования путей время генерации в районе 0.4 сек.
                                                                    0
                                                                    Что-то совсем запредельное. На моем локальном серваке который стоит на обычной старенькой офисной машинке. Без кеширования путей(кстати впервые об этом слышу) выходит около 0.0656
                                                                      0
                                                                      кеширование путей(и еще чего то) включается в главном конфиге опцией internal_cache, на vds(linux) 400 мгц, 96 ram, цыфры в районе 0.2 с eAccelerator — 0.02
                                                                        0
                                                                        в 2.1 похоже нету. Я свой проект начал переносить на 2.2, но обломался переписывать все запросы, потому что в новой версии они кардинально изменили орм (
                                                                    0
                                                                    Хии — «Основан на базе CodeIgniter» если уж основан то это наложение на него или непонятно что именно заимствовалось?
                                                                      0
                                                                      Когда только создавали Kohana — за архитектурную основу взяли архитектуру CI и несколько тищь строчек его кода. Потом все переписали, архитектуру в 2.3 кардинально меняют.
                                                                        0
                                                                        Помнится, в момент выхода её прародителя Blue Flame на форуме CI был топик, где Дерек обвинял Blue Flame в плагиате — внутри был фактически code igniter. Авторы даже копирайты прежние не потрудились убрать, просто сделали mass replace слов CI на BF.
                                                                        –1
                                                                        Фреймворк выглядит неплохо, но по причине малого количества документации у меня не получилось найти ответы на следующие вопросы:

                                                                        • навязывает ли Kohana xhtml-разметку?
                                                                        • можно ли сделать там роутинг url-ов похожий на тот, что есть в Django?
                                                                        • умеет ли ORM делать JOIN в обе стороны для one-to-many отношений?
                                                                          0
                                                                          Класс, как раз собрался поизучать, спасибо за статью, буду ждать продолжений.
                                                                            0
                                                                            Kohana по скорости выигрывает у Symfony?
                                                                              0
                                                                              В разы.
                                                                              0
                                                                              Блин, действительно будет полезен в небольших проектах. Достаточно все предсказуемо. Спасибо, будем изучать
                                                                                –1
                                                                                Спасибо, интересный фреймворк.
                                                                                Однако, после заявлений об ООП и PHP5 реализация класса utf8 выглядит довольно странно.
                                                                                  0
                                                                                  Спасибо, начал изучать kohana, а то CI хоть и нравится, но его поддержка совместимости php4 расстраивает…
                                                                                    0
                                                                                    Честно говоря статья только для юзеров CI (который мне не понравился), хотелось бы видеть обзоры фреймворков по сравнению с альтернативными, теми же симфони (который мне совсем не понравился0, кейком (мой выбор), зендом (не юзал, испугавшись отзывом, что н аобычном шаред хостинге даже «hello, world!» будет тормозить, пока «пиццоттыщ» строк в «пиццот» файлах инклудить будет.
                                                                                      0
                                                                                      От себя посоветую: www.brotkin.ru, не мерено по Кохане на русском.

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

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