Как не надо писать сравнения. 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
- Относится в той же степени к Yii. К тому же, документация Symfony настаивает на том, что это не MVC-фреймворк.
- Относится в той же степени к Yii.
- Относится в той же степени к Yii.
- Встроенная поддержка Codeception позволяет писать функциональные и приёмочные тесты в Yii 2.0.
- YAML как плюс фреймворка? Серьёзно?
- Поддержка событий в ядре Yii 2.0 присутствует. Заранее подготовленного диспетчера нет, но делается он созданием нового bootstrap-класса очень просто.
- Поддержка DI в Yii 2.0 имеется.
- Аналогично.
Плюсы и минусы Yii: минусы
- Это про 1.1. В 2.0 очень много всего для крупных приложений. Начиная с тегирования кеша и кончая поддержкой read-write split для репликации БД.
Итого: статья не актуальная и определённо вредная. Если брать те пункты, по которым делалось сравнение, в большинстве случаев Yii 2.0 или лучше или на равных. Я ни в коем случае не хочу сказать, что Symfony — плохой фреймворк. Конечно, это далеко не так. Но рассматривать его вторую версию в сравнении с Yii 1.1, который уже несколько устарел, полностью некорректно.
Комментарии RSS по email OK
Поддерживаю Алекса конечно :) Справедливости ради :)
Думаю что мы никогда не увидим непредвзятого сравнения любых технологий в IT, будь то Win vs Lin, NetBeans vs JetBrains, Yii vs Symfony. Вопросы из ряда "религиозных", каждый хвалит свое и ругает чужое. Каждый уважающий себя разработчик пробовал несколько языков, несколько IDE и выбрал те, которые ему больше понравились, а многие из сравнительных статей носят характер рекламных и нацелены на начинающего, который делает первые шаги в профессиональном IT. Бороться с этим надо. Ни крестовые походы, ни радикальный экстремизм не принесли ничего полезного обществу. Так же и сравнительные статьи. Молодой ум прочитает что телевизоры LG самые крутые потому что там 300+ приложений в smart, а у Samsung только 100 и будет всем рассказывать что LG-хорошо, а Samsung-плохо, даже если он никогда не открывал Smart и пользуется только как тв от антенны.
Да да да, половина про yii1, другая про yii2. Попахивает на сравнение килограммов с метрами
Да уж, довольно таки странное сравнение.
Александр, а можо подробнее об
Не холивара ради. Просто я использую этот формат, мне кажется он очень удобный. В чем его минусы конкретно в Symfony? Или почему это не плюс?
Бред какой-то, сравнивать Symphony2 с первым Yii :) Да и даже касательно первого Yii - некоторые моменты в статье неверные.
Для меня в симфони есть только одна киллер фича - несвязные компоненты. Я мечтаю о том дне, когда yii станет менее связным. Грубо говоря выделить какую-то часть yii2 в микрофреймворк, который, как и симфони, предоставлял бы реквест-респонс слой (в ddd это http layer по-моему называется). А всю начинку (доменный слой или слой бизнес логики) уже оставляют на откуп разработчиков. А далее уже кому нужно поставят все стандартные виджеты\хелперы\компоненты (мы в команде практически не используем стандартных виджетов, поскольку все круды и, иногда, фронтенд пишем на ангуляре).
Дмитрий, Yaml — формат неплохой, хоть и приходится постоянно следить за форматированием, но я не считаю, что он может серьёзно рассматриваться как плюс или минус фреймворка. Если уж на то пошло, его можно легко и в Yii использовать и в Symfony не использовать.
rmrevin, когда-нибудь запилим...
Sam, а что вы думаете по поводу вот этого habrahabr.ru/post/248609/ ?
Nepster, по поводу ZF или по поводу тенденции бить фреймворк на компоненты?
Если честно, то статья вообще не внушает профессионализма, неубедительные аргументы
Что? не нужно вручную создавать поля для формы? Что за обрывки каких то не внятных фич?
Мы говорим о php * (Yii) Ajax-функции задокументированы крайне скверно, новым разработчикам это может доставить проблем.
Интересно, спасибо. Очень люблю такие холиварные статьи. Они круто пробуждают интерес, и нет ничего плохого в том, чтобы попробовать что-то новое.
Могу от себя сказать, что обожаю 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, но пока только учусь. Даже трейты и неймспейсы не могу сказать, что хорошо понимаю. Куда мне пока до вас.
Sam, мы сейчас пишем приложение на yii2, там все начиналось просто но потом очень сильно разрослось. Поэтому решили раздробить все на клиенты и логику вынести в rest api.
В результате оказалось очень много фитч yii2 как бы и не нужны. Например гриды, капча, рбак и тп.
Было бы здорово так-же подробить это все дело и дать возможность избавиться от ненужного.
И теперь походу я буду советовать всем новичкам как раз зенд и симфони, а только потом yii.
yii2 очень сложный. С той точки зрения, что в нем нет жестких ограничений в архитектуре и можно легко свернуть не туда. Честно говоря я жалею, что начал с yii, а не с зенда например, так как изначально не знал про DI, слоистые архитектуры и yii не подсказал.
Поэтому если вы новичок, приходите в yii, то будьте готовы, что когда ваш проект разрастется будет очень много проблем.
Было бы здорово завести какой-то жесткий супер режим, который не дает свернуть на лево и следует всем лучшим практикам.
Nepster, на тему подробить меня тоже посещают мысли. Но цель «избавиться от ненужного» немного не актуальна. В Yii реализована ленивая загрузка, поэтому всё, что не используется, никак не влияет на проект. Разве что кушает совсем немного дисковое пространство.
Про рамки да, Yii их практически не устанавливает в плане того же DI. Наверное, стоит в документации ссылаться на всё это почаще...
Sam, еще было бы здорово чуть-чуть улучшить GII, например загрузить в него ТЗ в doc файле, и он сгенерирует весь проект =).
Но я думаю мы этого до yii 2.2 не увидим =(
Nepster, ни в коем случае. За что тогда платить программистам?! :)
Каждому инструменту своя область применения, я считаю глупо сравнивать Yii и Symfony, оба фреймворка хороши для определенного круга задач.
Валентин, нет смысл был в том, что сравнивали старый yii1 с Symfony2.
Александр, реализуйте лайки к комментариям :)
Sam, немного не в тему, хотел подписаться на RSS, кликнул вверху справа на ссылку: feeds.rmcreative.ru/rmcreative открывает адрес сразу 10.1.100.1:82/ со словами "Ресурс по данному IP-адресу заблокирован по решению органов государственной власти".
Ктото, странно. У меня норм.
Ктото, и у меня все норм.