Недостатки фреймворка 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 или вы в чём то принципиально со мной не согласны — welcome в комменты.

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

 
Поисковые запросы, по которым приходили пользователи
 
 
 
 

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

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

ctrl+enter

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

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