SowingSadness
@SowingSadness
web-разработчик

Отличая Symfony 2 и Yii

Сейчас на распутье. Нужно начинать разрабатывать серьёзное RIA с длительным циклом жизни. А поэтому стоит серьезный выбор между 2 frameworl'ами.
На данный момент по документациям нашел следующие отличая(возможно и ошибаюсь).

ORM.
В Yii есть Scope, в Symfony 2 вместо них Filter's и Repositories, но они не такие удобные, как Scope и нужно плодить сущности.

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

Доступ.
Подход к доступу в Symfony 2 основан на ACL, в Yii на RBAC (т.е. тут Yii предпочтительнее)

Легкость в освоении.
Мне показалось, что Yii освоить гораздо проще чем Symfony 2. При этом возможности у фреймворков почти одинаковые. Да и с документацией на русском языке у Yii получше.

Все описанное выше — это мои личные впечатления после прочтения документаций и создания приложений чуть более сложных чем «Hello world».
Обращаюсь к мастерам, где я ошибаюсь и что упустил из виду(отличая)?

p.s.
Вопрос с PHP решен и выбор стоит лишь между этими двумя инструментами.
  • Вопрос задан
  • 37780 просмотров
Решения вопроса 1
SowingSadness
@SowingSadness Автор вопроса
web-разработчик
Symfony 2 не так плох как я о нём думал.
Просто везде не пишут как правильно его использовать.
Те кто говорят, что он сложный, но лучше, тоже не представляют как правильно «готовить» sf2 + doctrina.

Все Entity остаются лишь Entity без какой либо логики, только getters и setters.
Вся бизнес-логика оформляется в виде сервисов.
В контроллерах только проверка параметров и вызов соответствующего сервиса.

Все остальные претензии по поводу ошибок, событий и Forms к Sf2 остаются.
Но с подходом Data Mapping сложность написания и поддержки продукта действительно снижается.
Т.е. тут сыграл роль лишь Data Mapping.

В Symfony 2 есть большая проблема с тем что не правильно написан DI Container.
И поэтому весь код практически сводится к использованию глобальных переменных. Сравните:
$myService = $this->getContainer()->get('myService');
/* vs */
global $myService;

Преимущество у Sf2 тут исключительно в том, что при использовании сервисов мы знаем что там что-то лежит. Не факт что то что нужно, но что-то лежит. От чего легче не становится.

UPD
Какой фрэймворк выбрать Yii 2 или Symfony 2?
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
ExxY
@ExxY
Если вам по-быстрому набросать бложек — выбирайте Yii. Он простой.
Если вы собираетесь делать серьёзное приложение, если вы знаете зачем нужен Dependency Injection, если вам необходимо покрывать большинство кода тестами, если вам нужно супер-крутая модульная архитектура, работа с миграциями и фикстурами — только Symfony 2.
Ответ написан
dutchakdev
@dutchakdev
Что бы я не делал, куда бы я не шел, я выбираю — Yii. Больше менять не чего не хочу. Причин на это столько, что это целая отдельная статья, которая миллион раз переписана другими людьми, полюбившими это чудо!
Ответ написан
С Yii плотно не работал, потому просто мнение:

ORM в Symfony (Doctrine2), имхо, мощнее чем в Yii по определенению. DataMapper+UoW vs ActiveRecord. Плюс хранлище на основе SQL СУБД без особых проблем может быть заменено на что-то другое, MongoDB, например, также из коробки почти. Но, вероятно, DM несколько тормознутее AR за счёт широкого использования отражений. Решается путем создания кастомных репозиториев, где хоть напрямую SQL вызывайте, не пользуясь DBAL.

Доступ в sf2 может быть основан на чём угодно, главное реализовать isGranted(). На основе ролей — из коробки.

Вообще модульность и низкая связанность сильная сторона sf2 (не в последнюю очередь из-за DI где нужно и где не нужно :) ). Другие full-stack PHP фреймворки, что поверхностно изучал, этим похвастаться не могут. В sf2 жёсткие связи используются мало, почти всё конфигурируется: не нужны предлагаемые абстракции роутера — напишите свой класс хоть на switch case, хоть на C, главное нужный интерфейс реализуйте и строчку в конфиге поправьте (а можно и не править, но, имхо, не стоит).
Ответ написан
wartur
@wartur
Автору топика за поднятый вопрос благодарность. Сам пишу на Yii уже около полу года. Всем советую. Легко, просто, практично, все есть, куча сторонних модулей (в моем проекте их более 3-х, сэкономлено минимум 2-3 недели работы)

На данный топик наткнулся, что бы узнать не созрел ли я для более «мощных» академических фреймворков вроде SF2 или ZF2 и судя по отзывам понял кое-что для себя.

Так же скажу, что ZF2 мне не нравится из-за тяжести (как минимум минимум в 2 раза медленнее запускается ядро), и «многословность» (уж очень много писанины надо генерировать в коде)
Ответ написан
des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак
yii первоначально мне не очень понравился своей документацией. msdn по сравнению с ним боги. но вклиниваясь в тему нравиться он мне стал все больше и больше (другие правда не юзал)
Ответ написан
tamtakoe
@tamtakoe
Inori, как понимаю, вы поддерживаете и даже продвигаете simfony среди разработчиков. Почему бы вам не разобраться в причинах недопонимания SowingSadness и не написать на основе этого несколько разъяснительных статей? Так же то, что все вокруг твердят о высоком пороге вхождения, должно быть хорошим звоночком, который намекает, что в т. ч. и вы недостаточно потрудились, чтобы его снизить. Порог ведь определяется только на половину архитектурой, а на другую — работой комьюнити и наличию адекватного материала: примерами, решением популярных проблем, открытыми проектами. Порой, один человек может так разжевать и популяризовать технологию, что ей все начинают пользоваться, несмотря на какие-то недостатки. Надеюсь, что в simfony таким человеком станете вы и мы будем вам благодарны!
Ответ написан
cystbear
@cystbear
Так вот RBAC проверяет всю операцию целиком. Каким бы способами мы не пытались это сделать.


то есть получается для RBAC нам нужно определить/сделать/описать высокоуровневые/абстрактные задачи. Например отправка письма, так?
Ответ написан
Реализацию проверки прав доступа в Symfony2 удобно делать используя Voter'ы. По моему даже удобнее и гибче, чем RBAC. symfony.com/doc/current/security/voters.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы