Недостатки фреймворка Kohana

Недостатки фреймворка Kohana

1. IDE-подсказки при работе c ORM. Их нет. Например, код:

$latestPosts = ORM::factory('Post')->fetchLatests($limit);

Названия методов из класса Model_Post придётся вспоминать (например, fetchLatests), т.к. IDE покажет подсказки только для класса ORM, а Model_Post - наследник ORM. Перейти в метод по ctrl+click не получится. Вы можете возразить, есть же PHPDoc @var: 

/**
 * @var $modelPost Model_Post
 */
$modelPost = ORM::factory('Post', $postId);
$latestPosts = $modelPost->fetchLatests($limit); //теперь IDE любезно покажет доступные методы и перейдёт по ctrl+click

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

2. Медленное развитие, отставание от конкурентов. Малое количество официальных модулей. Это так. 

Чтобы работать с Kohana на php 5.5 нужно или поставить собаку в Kohana_Database_MySQL на вызов mysql_connect, или найти неофициальный адаптер mysqli и переключиться на mysqli.

3. Не удобный класс Request. Попробуйте задать свои юзерагент и реферрер при выполнении http-запроса. Я пока что нашёл единственный вариант, который связан с подменой суперглобальной переменной $_SERVER $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER']. Логично было бы иметь метод setUseragent или просто setHeaders для возможности установить свои заголовки в curlClient.

$_SERVER['HTTP_USER_AGENT'] =  'этот юзерагент применится ';
$_SERVER['HTTP_REFERER'] = 'этот реферрер применится';

$clientParams = array( // в этих параметрах задать не получается.
	'HTTP_USER_AGENT' => 'Mozilla try 1',
	'User-Agent' => 'Mozilla try 2',
	'HTTP_REFERER' => 'а кохане то пох..',
);

$response = Request::factory('http://jeka.by', $clientParams)
	->method(Request::GET)
	->execute();

var_dump($response->body());
exit;

4. Не удобно писать phpunit тесты. Не исключаю, что я плохо продвинулся в этом направлении. Имеется даже модуль unittest. Тесты я запускаю так: phpunit --bootstrap=modules/unittest/bootstrap.php tests/

Что мне не нравится в тестах коханы?

  • связанность основного и тестового окружения. Для тестов использую отдельную тестовую базу. При тестировании страниц через http-запрос запрос попадает на рабочее (локальное) окружение! [решил проблему: использовать класс Request с относительным путём - обязательно без http://server/ - тогда запрос попадает сразу на route в том же окружении, откуда и запускается]
  • Если залогинить пользователя в одном из тестов (force_login), то разлогинить его уже не получается, падает с фаталом "Headers already sent" при вызове logout. Т.е. для всех тестируемых файлов пользователь остаётся залогиненным! [решилось правками системных файлов, но фиксы вносились строго для возможности тестирования и выглядят как костыли].

5. Поддержка фреймворка практически остановлена, версия kohana 3.4 скорее всего не выйдет никогда. Это очень большой минус, ведь другие фреймворки в это время активно развиваются. 

Можно почитать что пришлось изменить при миграции kohana проекта с php 5 на php 7.

Если вы знаете другие неприятные моменты в Kohana или вы в чём-то принципиально со мной не согласны — welcome в комменты.

Eсть предложение дать ещё одно название фреймворку Kohana - "Кокаха" cheeky. Как отмечено в первом комментарии, это категорически не верно. Kohana интересный фреймворк, который заслуживал (и заслуживает) внимания. Для многих Kohana является первым php-фреймворком, с которым они познакомились. Можно говорить о достоинствах фреймворка (ООП, каскадная файловая система, низкий порог вхождения), но, этот пост о недостатках Кохана.

 
 
 
 

icon Комментарии 2

 dikar 10 лет назад
С минусами 2,3 согласен, то что поддержку прекратили - очень плохо (1 минус и является следствием этого, а вообще, если есть мозги, то и сам догадаешься, к чему относится ->fetchLatests($limit)). Но и плюсов у Коханы множество. Я вот например сейчас поддерживаю сайт который сделан на Кохане, так это просто песня. Замечательный фрейм. Да и у вас, я смотрю, сайт сделан на Кохане. А то что прекратили поддержку, никак не дает вам право порочить его славное название. "Кокаха". Очень глупо и характеризует вас как человека недалекого.
Зарегистрировался на этом сайте только для того, чтобы добавить этот комментарий. Уж не смог пройти мимо!
 root 10 лет назад
dikar, прошу прощения, если обидел лично вас или сообщество Кохана. Конечно, коверкать названия фрейма не стоило. Внёс правки, сославшись на ваш комментарий.
Насчёт 1. IDE-подсказки при работе c ORM, у меня как раз вызывает неудобство. Я привык, что запросы, которые связаны с какой то таблицей, находятся строго в файле модели, а не разбросаны в контроллерах. Если я вижу вызов модели в контроллере KO, то, чтобы перейти в конкретный метод, приходится открывать модельку вручную и уже там искать метод вместо прямого перехода по onClick. Знаю, можно заготовить статические методы в каждой модели с PHPDoc, чтобы исправить это, но, из-коробки этого нет.
Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ