Kohana

индекс
91,27

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

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

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

Итак.

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


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

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

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


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

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


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

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


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

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

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

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

В заключении


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

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


+44
30 октября 2008, 13:52
46

комментарии (79)

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

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

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

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

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

Какие обиды? :)
Ведь есть «Пы-ы-ы-ы-во». :)
+4
habralex #
А знаетэ як воны наш борщ называють? Пе-е-ервое…
+1
zaregan #
ладно ладно, пошутили и хватит! ;)
+6
plzen #
смажену :)
+4
Yeah #
Позор мне!!! Точно!
0
xorax #
Вполне возможно, что это украинский новояз :)
0
akick #
Вы ошибаетесь. Это не новояз.
+1
caezar #
в том же смысле в котором в русском «заниматься любовью»
0
armaturich #
От польского kocham = любить (а, кстати, lube = нравиться)
+4
anklav #
Поправочка: kocham = люблю, kochać = любить. А вообще это слово украино-белорусско-польское.
+2
MastaEx #
У меня тоже весьма положительное впечатление о Кохане.
По сравнению с Codeigniter'ом качество кода самого фреймворка заметно выше. Так же очень понравилась система хуков.
+2
piupiu #
Только вчера писал пост-вопрос, и ваш, прямо по каждой мелочи подходит как ответ! Это судьба?
(для интереса — прочитайте его)
Обязательно попробую этот фреймворк.
+2
piupiu #
Да, и конечно же продолжайте писать! Тем более если маленькое коммунити и не качественная документация, то ваш материал будет очень ценен (по крайней мере для начинающих).
Как пожелание — лучше на примере разработки какого-нибудь несложного проекта с обыденным функционалом.
+5
kewgram #
С деревней скрытого листа Konoha не имеет ничего общего. Зеленый цвет тут вообще случайно )
0
XuMiX #
лично мне не понравилось, ч то валидация данных проходит во view. еще больше не понравилось, что _формы_ можно и, вроде как приветствуется, создавать в контроллере… каша какая-то
+2
veevtam #
Валидация не во вью, откуда такая информация?
Я вот тоже терпеть не могу генерацию HTML в контроллере и неиспользую. Генерация форм — это сторонняя библиотека использующая класс Validation, она даже в базовую поставку не входит.
–1
XuMiX #
честно скажу, уже не помню, просто отложилось в голове такое, возможно, там были неудачные примеры
помню про Forge(вроде так) класс, который юзали в контроллере
и хелпер Validation который проверял данные именно во вью
+2
veevtam #
Forge — это формогенератор, в стандартную поставку он не входит и использовать его — дело вкуса (я не использую). Validation — это класс используемый в контроллере, хелпером он не является и полностью отделен от вью. Даже сообщения об ошибках он содержит во внешних ленгфайлах.
0
Darx #
К слову сказать, в CI нет встроенной поддержки форм, что очень непривычно после использования Zend Framework.
0
BobiKK #
Тем, кто пользуется ZF с версии 0.1.5 вполне даже привычно :) Формы — относительно новая фича
0
XuMiX #
ну, перепутал, значит, валидация идет в котнтроллере, что все равно неправильно, на мой взгляд, т. к. должно происходить в модели
0
Xobb #
Можно и в модели. Посмотрите метод validate() в ORM.
0
syncro #
расскажите, если не трудно, что за такие ленгфайлы и в чем их преимущество перед переменными сессии?
+3
veevtam #
Ленгфайлы — это файлы хранящие локализованные строки. Например сообщения об ошибках заполнения формы. Для каждого языка — свой набор файлов. При таком подходе в теории перевод сайта на несколько языков — плевое дело.

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

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

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

0
Arhivator #
Насчет форума, я бы так не сказал, недавно у меня были проблемы с кешированием, мучался пару дней в поисках решения, пока мне отвечают. В итоге оказалось что в версии 2.1 просто забыли заполнить в нужном месте переменную вот у меня ничего и не работало. Этого бага нету в 2.2 но никто и не шевельнулся на форуме.
0
Xobb #
2.1 уже не поддерживается. Рекомендуется переходить на 2.2. Даже есть в вики мигрейшн гайд.
+2
MARDEN #
Обозреватели фреймворков присваивают одни и те же преимущества. Абсолютно каждый разработчик очередного FW отмечает быстроту, удобство, гибкость и т. п. Но при этом ведь ничего принципиального нового не придумали. Вот и Кохана — очередная попытка изобрести велосипед. Не вижу в этом фреймворке реальных преимуществ перед конкурентами.
0
Darx #
Как говорится, на вкус и цвет…
0
j4ck #
Есть ли и как реализована поддержка связей между моделями 1-to-many, many-to-many? (кейковские hasMany, BelongsTo, hasManyAndBelongsTo)
0
Xobb #
Есть такое. Посмотрите system/libraries/ORM.php.
Походу политика ORM содранная с Ruby.
0
sokiche #
А кто-нибудь уже в нем ковырялся?
Подскажите, пожалуйста, в коде прослеживается постоянный вызов класса View (new View('template')).
Но самого класса с таким имененем я не нашёл (только View_Core).
В чем подвох?
0
sEXEcutor #
Вот в этом:

$extension = 'class '.$class.' extends '.$class.'_Core { }';
eval($extension);

Это финт, чтобы класс View (как и остальные) можно было заменить своим.
0
sokiche #
Спасибо
+2
AmdY #
3.14дец. после этого слабо верится в хороший ООП во фреймворке.
0
oWeRQ #
может быть нельзя назвать это «хорошим ооп», зато позволяет расширять существующие классы не исправляя при этом написаные код(в данном случае сам фреймворк).
0
AmdY #
вот это и надо записывать в плюсы, а наличие ООП мне уже давно не говорит о качестве :(
я вот прочитал статью, но так и не понял что из себя представляет фрейморк, какие у него плюсы, кроме того, которые обещает любой фреймворк :) Про orm вовсе непонятно, что там сть, хотя этот вопрос интресовал меня больше всего, это его осноное отличие от CI из коробки.
0
oWeRQ #
отличие от CI(не вдаваясь в подробности) — использование php5 и понятный код.
0
AmdY #
ну так на то он и фреймворк, чтобы было пофег что внутри и как написано, главное чтобы апи было удобное. я вполне удачно совмещал фрейморк на php4 и код модулей на php5
а то написано
>Скорость освоения и простота использования
а после
> Вместо нее я использовал Auto_Modeler
и в чём удобство? в том, что берём фреймворк и заменяем все бибилиотеки на свои?
статья ниочём, а её заплюсовали. ежедневно открываю rss, а там 99% мусора :(
0
Xobb #
Да, ковырялся. До 2.2 на транке сидел, так иногда слал патчи.
Если будут вопросы — пишите в личку.
–4
timati #
ZendFramework вам в руки и баробан на шею.
+11
veevtam #
Вам ник очень подходит :-)
0
Vyazovoi #
Заинтересовали, на досуге обязательно его рассмотрю со всех сторон.
Это я к тому что:
Если кого-нибудь заинтересовал этот фреймворк — пишите в комментах. Будут желающие — постораюсь периодически выкладывать на Хабре посты на эту тему.

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

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

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

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