<rmcreative>

RSS

Как не надо писать сравнения. Symfony2 vs Yii: какой фреймворк выбрать в 2015-м году?

2 сентября 2015

Почитал свежую статью отличной команды stfalcon. Оформлена она замечательно, читается приятно. В итоге Symfony почти безоговорочно рвёт Yii, но есть «нюансы», которые делают статью некорректной.

Производительность Symfony2 vs Yii: краткое сравнение

Заголовок отличный, только вот про саму производительность ни слова. А ведь это сильная сторона Yii.

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

Не очень ясно, что тут имеется ввиду, но в Yii 2.0 мы получаем на руки также готовое решение, созданное из шаблонов проектов basic или advanced. Кроме того, можно и свой шаблон сделать.

Разработка через тестирование: Symfony2 — торт!

Что Symfony2 — торт в плане тестирования не спорю, но вот как-то упущено, что если в Yii 2.0 использовать dependency injection и выделять код в компоненты и доменный слой, тестировать не менее приятно.

ORM/Active Record: Для этого разработчикам приходится обращаться к статическим методам, чтоб тянуть модели, и к не статическим — для логики моделей.

Так было в Yii 1.1. В 2.0 запросы выделены в Query.

Стиль кода

После прочтения этой части становится ясно: сравнивают Yii 1.1 с Symfony2. Круто. Yii 2.0 следует PSR-2 и использует пространства имён.

Расширения

Опять про Yii 1.1. В 2.0 расширения ставятся полностью автоматически через Composer. Yii 2.0 упоминается, но как что-то такое, что вообще ещё не готово и рассматривать даже не стоит. А ведь с релиза 2.0 уже почти год прошёл.

Комьюнити

У Yii сообщество настолько большое и активное, что тот же GitHub не может всех отобразить: "Woah, this network is huge! We’re showing only some of this network’s repositories". 175 тысяч юзеров на форуме, 27 тысяч в относительно недавно созданной группе в Facebook. Активный IRC-канал. И, что главное, отличное отношение к новичкам.

Также мы принимаем, как и Symfony и другие серьёзные фреймворки, непосредственное участие в php-fig. То есть «создаём тренды, актуальные для мира PHP».

Плюсы и минусы Symfony2

  1. Относится в той же степени к Yii. К тому же, документация Symfony настаивает на том, что это не MVC-фреймворк.
  2. Относится в той же степени к Yii.
  3. Относится в той же степени к Yii.
  4. Встроенная поддержка Codeception позволяет писать функциональные и приёмочные тесты в Yii 2.0.
  5. YAML как плюс фреймворка? Серьёзно?
  6. Поддержка событий в ядре Yii 2.0 присутствует. Заранее подготовленного диспетчера нет, но делается он созданием нового bootstrap-класса очень просто.
  7. Поддержка DI в Yii 2.0 имеется.
  8. Аналогично.

Плюсы и минусы Yii: минусы

  1. Это про 1.1. В 2.0 очень много всего для крупных приложений. Начиная с тегирования кеша и кончая поддержкой read-write split для репликации БД.

Итого: статья не актуальная и определённо вредная. Если брать те пункты, по которым делалось сравнение, в большинстве случаев Yii 2.0 или лучше или на равных. Я ни в коем случае не хочу сказать, что Symfony — плохой фреймворк. Конечно, это далеко не так. Но рассматривать его вторую версию в сравнении с Yii 1.1, который уже несколько устарел, полностью некорректно.

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

  1. №9965
    Степан
    Степан 02 сент. 2015 г., 17:04:56

    Поддерживаю Алекса конечно :) Справедливости ради :)

  2. №9966
    Дмитрий
    Дмитрий 02 сент. 2015 г., 17:05:47

    Думаю что мы никогда не увидим непредвзятого сравнения любых технологий в IT, будь то Win vs Lin, NetBeans vs JetBrains, Yii vs Symfony. Вопросы из ряда "религиозных", каждый хвалит свое и ругает чужое. Каждый уважающий себя разработчик пробовал несколько языков, несколько IDE и выбрал те, которые ему больше понравились, а многие из сравнительных статей носят характер рекламных и нацелены на начинающего, который делает первые шаги в профессиональном IT. Бороться с этим надо. Ни крестовые походы, ни радикальный экстремизм не принесли ничего полезного обществу. Так же и сравнительные статьи. Молодой ум прочитает что телевизоры LG самые крутые потому что там 300+ приложений в smart, а у Samsung только 100 и будет всем рассказывать что LG-хорошо, а Samsung-плохо, даже если он никогда не открывал Smart и пользуется только как тв от антенны.

  3. №9967
    Evgeniyrru
    Evgeniyrru 02 сент. 2015 г., 17:44:41

    Да да да, половина про yii1, другая про yii2. Попахивает на сравнение килограммов с метрами

  4. №9968
    Shkarbatov
    Shkarbatov 02 сент. 2015 г., 22:08:40

    Да уж, довольно таки странное сравнение.

  5. №9969
    Дмитрий
    Дмитрий 03 сент. 2015 г., 12:11:15

    Александр, а можо подробнее об

    YAML как плюс фреймворка? Серьёзно?

    Не холивара ради. Просто я использую этот формат, мне кажется он очень удобный. В чем его минусы конкретно в Symfony? Или почему это не плюс?

  6. №9970
    Web Design Dubai
    Web Design Dubai 03 сент. 2015 г., 12:30:21

    Бред какой-то, сравнивать Symphony2 с первым Yii :) Да и даже касательно первого Yii - некоторые моменты в статье неверные.

  7. №9973
     rmrevin
    rmrevin 03 сент. 2015 г., 13:14:38

    Для меня в симфони есть только одна киллер фича - несвязные компоненты. Я мечтаю о том дне, когда yii станет менее связным. Грубо говоря выделить какую-то часть yii2 в микрофреймворк, который, как и симфони, предоставлял бы реквест-респонс слой (в ddd это http layer по-моему называется). А всю начинку (доменный слой или слой бизнес логики) уже оставляют на откуп разработчиков. А далее уже кому нужно поставят все стандартные виджеты\хелперы\компоненты (мы в команде практически не используем стандартных виджетов, поскольку все круды и, иногда, фронтенд пишем на ангуляре).

  8. №9974
    Sam
    Sam 03 сент. 2015 г., 18:32:48

    Дмитрий, Yaml — формат неплохой, хоть и приходится постоянно следить за форматированием, но я не считаю, что он может серьёзно рассматриваться как плюс или минус фреймворка. Если уж на то пошло, его можно легко и в Yii использовать и в Symfony не использовать.

  9. №9975
    Sam
    Sam 03 сент. 2015 г., 18:33:38

    rmrevin, когда-нибудь запилим...

  10. №9976
    Nepster
    Nepster 04 сент. 2015 г., 9:29:20

    Sam, а что вы думаете по поводу вот этого habrahabr.ru/post/248609/ ?

  11. №9977
    Sam
    Sam 04 сент. 2015 г., 17:24:07

    Nepster, по поводу ZF или по поводу тенденции бить фреймворк на компоненты?

  12. №9978
    mlapko
    mlapko 04 сент. 2015 г., 18:42:11

    Если честно, то статья вообще не внушает профессионализма, неубедительные аргументы

    • Symfony2 уже имеет в себе целый набор продвинутых фич, бандлы для форм и т.д. Разработчикам не нужно вручную создавать поля для формы или же обрабатывать данные.

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

    Мы говорим о php * (Yii) Ajax-функции задокументированы крайне скверно, новым разработчикам это может доставить проблем.

  13. №9979
    Den
    Den 05 сент. 2015 г., 0:14:59

    Интересно, спасибо. Очень люблю такие холиварные статьи. Они круто пробуждают интерес, и нет ничего плохого в том, чтобы попробовать что-то новое.

    Могу от себя сказать, что обожаю Laravel 4.2 (5-ку пока не трогал). Ну очень он какой-то простой, элегантный и мощный. Тем более, что до большинства посетителей блога Александра мне ещё расти и расти. Я - новичок. И очень удивился, насколько Laravel к новичкам дружелюбен.

    Но я и отдаю дань Yii. Очень интересный фреймворк. Gii очень подкупает, хотя бы. Imperavi редактор это вообще... Ну, и конечно, скорость. Очень сильная сторона фреймворка. Насколько понимаю, Laravel немного уступает, хотя и адекватных тестов нет, но это не важно.

    Вот, что хочу сказать. На мой взгляд, основная беда Yii 2.0 - качественная документация на русском. С какой-то супер простой пошаговой разработкой разного типа проектов. Ведь фреймворк позиционируется, как топовый в СНГ. На это и нужно бить. Максимально понятно, разжёванно, просто, интересно. Многие сразу говорят: "Да всё есть, всё понятно." Кидают ссылки на какую-то незаконченную документацию, а я приступаю к изучению на Гитхабе, а там - 404, 404, 404... Самые важные для меня разделы. Не знаю, как сейчас, может уже и закончили. Но, когда был выбор, на чём делать проект, меня потрясли уроки Tutsplus и Laracasts, а мой английский технический - плох. А там и так, всё понятно, хотя, я совсем новичок.

    Такая же история с Symfony и Zend. Их вообще многие новички не рассматривают и боятся. Почему? Нет хороших понятных мануалов на русском. А Laravel, стоит признать, взял только лишь простотой и элегантностью. Код читается, как книга. Я не могу себе даже представить, что было бы с Yii 2.0, если бы всё было сделано максимально качественно в плане разжёванности. Уверен, Laravel бы подвинулся.

    Желаю Yii дотянуться до звёзд. Искренне.

    P.S. Сам бы с радостью помогал проекту переводами и принимал бы участие в новых идеях для улучшения Yii, но пока только учусь. Даже трейты и неймспейсы не могу сказать, что хорошо понимаю. Куда мне пока до вас.

  14. №9980
    Nepster
    Nepster 05 сент. 2015 г., 0:49:53

    Sam, мы сейчас пишем приложение на yii2, там все начиналось просто но потом очень сильно разрослось. Поэтому решили раздробить все на клиенты и логику вынести в rest api.

    В результате оказалось очень много фитч yii2 как бы и не нужны. Например гриды, капча, рбак и тп.

    Было бы здорово так-же подробить это все дело и дать возможность избавиться от ненужного.

    И теперь походу я буду советовать всем новичкам как раз зенд и симфони, а только потом yii.

    yii2 очень сложный. С той точки зрения, что в нем нет жестких ограничений в архитектуре и можно легко свернуть не туда. Честно говоря я жалею, что начал с yii, а не с зенда например, так как изначально не знал про DI, слоистые архитектуры и yii не подсказал.

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

    Было бы здорово завести какой-то жесткий супер режим, который не дает свернуть на лево и следует всем лучшим практикам.

  15. №9981
    Sam
    Sam 05 сент. 2015 г., 12:31:49

    Nepster, на тему подробить меня тоже посещают мысли. Но цель «избавиться от ненужного» немного не актуальна. В Yii реализована ленивая загрузка, поэтому всё, что не используется, никак не влияет на проект. Разве что кушает совсем немного дисковое пространство.

    Про рамки да, Yii их практически не устанавливает в плане того же DI. Наверное, стоит в документации ссылаться на всё это почаще...

  16. №9982
    Nepster
    Nepster 05 сент. 2015 г., 15:01:13

    Sam, еще было бы здорово чуть-чуть улучшить GII, например загрузить в него ТЗ в doc файле, и он сгенерирует весь проект =).

    Но я думаю мы этого до yii 2.2 не увидим =(

  17. №9984
    Sam
    Sam 07 сент. 2015 г., 15:20:31

    Nepster, ни в коем случае. За что тогда платить программистам?! :)

  18. №9987
    Валентин
    Валентин 09 сент. 2015 г., 18:35:15

    Каждому инструменту своя область применения, я считаю глупо сравнивать Yii и Symfony, оба фреймворка хороши для определенного круга задач.

  19. №9989
    Nepster
    Nepster 10 сент. 2015 г., 23:34:47

    Валентин, нет смысл был в том, что сравнивали старый yii1 с Symfony2.

  20. №9991
    ...
    ... 12 сент. 2015 г., 20:52:53

    Александр, реализуйте лайки к комментариям :)

  21. №9993
    Ктото
    Ктото 24 сент. 2015 г., 23:43:19

    Sam, немного не в тему, хотел подписаться на RSS, кликнул вверху справа на ссылку: feeds.rmcreative.ru/rmcreative открывает адрес сразу 10.1.100.1:82/ со словами "Ресурс по данному IP-адресу заблокирован по решению органов государственной власти".

  22. №9994
    Sam
    Sam 25 сент. 2015 г., 13:32:40

    Ктото, странно. У меня норм.

  23. №10040
    TranceSmile
    TranceSmile 27 окт. 2015 г., 19:47:51

    Ктото, и у меня все норм.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.