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 решен и выбор стоит лишь между этими двумя инструментами.
  • Вопрос задан
  • 37594 просмотра
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 90 000 до 160 000 руб.
REDSTART Калининград
от 60 000 до 90 000 руб.
Bezlimit Москва
от 100 000 до 120 000 руб.
17 дек. 2018, в 01:36
700 руб./в час
16 дек. 2018, в 22:06
700 руб./в час
16 дек. 2018, в 21:48
1000 руб./за проект