Kohana 3.1(3.0x) vs Yii 1.1.6

День добрый.

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

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

Спасибо.

Тяжело будет найти человека, который достаточно хорошо знаком и с Yii и с коханой третьей ветки…

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

Думаете, что здесь вас кто-то отговорит от использования Yii в пользу Kohana? :D

И почему именно Kohana, а не Symfony?

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

немного не в тему (и уже старенькое), но всё равно, вдруг кому пригодится:

Сравнение Yii, CakePhp, CI

Ссылки на сравнения мож и не смотреть… Там не те версии, а так нейтрал)

Лично я за кохану) Очень понравилась работа с ORM

Lion__, а чем там отличается AR?

Мне в Yii framework очень нравится целостность стиля кода, именование методов и классов, все очень интуитивно и единообразно, что очень хорошо. Я чувствую полную гармонию со своим кодом, когда пишу на Yii ^__^. А вот в Kohana как-то все в разнобой, это ущемляет мои эстетические чувства.

Кроме того, когда я последний раз смотрел на Kohana, документация там была послабее, чем в Yii.

В общем, я больше симпатизировал собственно чистому Code Igniter, чем Kohana (не могу это объяснить словами, но чисто на интуитивном уровне "что-то там пошло не так").

Еще, не знаю тонкостей Kohana, я с ней знаком достаточно поверхностно, но архитектура Yii, особенно низкоуровневая (компоненты, поведения, события), его базовые классы – это просто сказка. Лучшее, что я когда-либо видел на PHP.

(Не считая виджетов zii, имхо: они – отстой.)

Мне было бы очень интересно услышать от обогащенного опытом Kohana-тяна преимущества его фреймворка.

Вот сейчас к примеру на Хабре хвалят Kohan’овский HMVC. Что по этому поводу думается? Нужно ли это в Yii? (лично мне – нет, но интересно мнение).

samdark

Сам подход для работы с моделей более удобен.

[sup]*[/sup]В Yii я всегда изменяю авлоадер чтобы разделить формы и модели, в таком плане и опишу:

  1. Реляция:

Yii:


relations(){..'users' => ....}


$user = Model_Post::model()->with('users')->Find...

$user->user->name;

Kohana:


$user = ORM::factory('post');

$user->user->name;

  1. Задавать параметры цепочкой.

  2. Обновлять поля без их получения

Почитай http://ruseller.com/lessons.php?rub=37&id=674

Поймёшь что лажа)

Я принимал участие в разработке HMVC для CI и там он был реально нужен… но больше как замена виджетам. В Yii проблемы с виджетами нет. Возможно, у HMVC в Ko3 более широкое практическое применение.

  1. Странно, что для Yii показан HAS_MANY/MANY_MANY, а для Ko3 HAS_ONE. Полный аналог того, что написано для Ko3 в Yii выглядит не хуже:



$userName = Post::model()->user->name;



Ko3 умеет вычислять отношения без какого-либо описания? Если да, то что Ko3 будет делать с именами таблиц вроде ‘news’?

  1. Пример можно?

  2. Yii тоже вроде умеет.

Ок напишу так:


$user = ORM::factory('post');

$user->user[N]->name;

Нет, она просто смотрит указан ли внешний ключ, и если да то автоматически привязывает.

То есть еслиб не было внешнего ключа то нам надо былоб писать:


$_has_many = array(

  'user' => array( 'Model' => 'user', 'foreign_key' => 'user' )

);

В Yii внешний ключ не проверяется…

Ну не знаю… Делать запросы к серверу мне не очень то и нравится… Хотя в 10% случаев это является идеальным вариантом(могу привести примеры если что).

Что-то я не понял, почему фабрика называется пост, а переменная выходит юзер.

При использовании Gii это не проблема. Большой плюс в том, что не надо лезть в базу, чтобы посмотреть, как, что и с чем связано.

Потому что писал и думал про вывод ника юзера, исправлю:

$post = ORM::factory(‘post’);

$post->user[N]->name;

При работе с моделью и так и так идёт запрос INFORMATION_SCHEMA.

ЗЫ: Я не пойму, вы будете придератся ко всему пока я не соглашусь с Вами? Ок, я соглашусь Yii лучше, почему? Потому что он наиболее быстрый из всех. Почему я вижу только один плюс? Потому что для меня и для заказчиков это самое важное… Не один раз уже была такая ситуация что клиент заказывал проект на зенде, потому что ему наговорили что он крутой очень, а потом опять оплачивали ту же суму чтобы я переносил на более быстрый фрейворк, и я выбирал Yii.

А который из постов выберется в данном случае? Первый попавшийся?

Если не включить кеш, что на сервере сделать несомненно стоит.

Ну, про AR мне просто очень интересно, чем принципиально лучше, поэтому и роюсь-придираюсь. Синтаксис, как я понял, очень сходный. Штуку с автопостроением отношений оценил. Ввиду отсутствия кодогенерации вполне оправдано.

Выгодное, наверное, занятие :lol:

И чтобы не быть офф-топом:




$post = ORM::factory('post');



Меня такая запись почему-то отпугивает. Post::model()->find() намного приятнее, если вы это обсуждаете :) А вообще, если бы всем нравился только один подход, то не было бы кучи других фреймворков. Здесь собрались люди, которым нравится Yii ;)


А который из постов выберется в данном случае? Первый попавшийся?

Я просто не добавил условие

Разработчики Yii настолько суровы что по их логике реляцию нельзя кешировать? (Я этот вопрос знал наперёд…)

Ну тут не интересоваться стоит… Просто придумать проект и воплотить его в жизнь на разных фрейворках, плюсы каждых из фреймворков становится видно мгновенно. Я думал написать в песочнице такую статью… Но универ не позволяет…

Ну… Это тоже самое что клиент Вам скажет - "Переделывай, ничё не правильно", только за это платят))

Можно сделать и:


$post = new Model_Post;

Просто первый вариант более соответствует логике. В том плане что работа с представлением View::factory, с запросами Request::factory и тд ( хотя я точно и не знаю, вроде $this->view и $this->request в контроллере тоже проканает )

samdark

В чём вообще смысл получать информацию о полях?