Чем Zend 2 и Symfony 2 лучше Yii 2?

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Dromok
Сообщения: 33
Зарегистрирован: 2015.06.22, 20:34

Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение Dromok »

Для работы потребовалось изучить как Yii 2, так и Zend 2. На Yii 2 написал уже несколько проектов. Фреймворк очень удобный и реально ускоряет разработку проекта в разы. Также недавно потребовалось написать небольшой проектик на Zend 2 + Doctrine. Проектик я написал и по крайней мере в основах этой связки разобрался. Но реально чтобы писать на зенде требуется раза в три больше времени, чем аналогичный проект на yii. Более неудобного фреймворка еще не встречал. Даже для элементарной выборки данных требуется писать страшный и длинный на вид вызов, для примера:

Код: Выделить всё

$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
в то время как полностью то же действие на йии выглядит коротко и красиво:

Код: Выделить всё

$product = Product::findOne(['name' => $name]);
Но при этом почему-то зенд и симфони (а они очень похожи, так что смело можно ставить рядом) считается чуть ли не стандартом индустрии и мегакрутыми фреймворками. Кто и почему выбирает зенд и симфони? Может я чего-то не понимаю, но я в здравом уме их никогда не буду использовать для своих проектов. Хотелось бы выслушать мнение специалистов.

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение Onotole »

Ща Зеленин придет, объяснит)

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

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

Аватара пользователя
ElisDN
Сообщения: 5495
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение ElisDN »

Onotole писал(а):Ща Зеленин придет, объяснит)
Уже объясняли.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):Выбирают их прежде всего приверженцы фанатичного предельно правильного ООП вне зависимости от задачи. Они пытаются сходу сделать свой код максимально гибким вне зависимости от того, пригодится ли гибкость или нет. Иногда это приходится кстати, иногда нет.
вот пошла отличная аргументированная дискуссия. Типа yii - круто, остальные фанатики. Человек именно за таким ответом и пришел )

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Dromok писал(а):Но реально чтобы писать на зенде требуется раза в три больше времени, чем аналогичный проект на yii.
в первый раз. если нет своей заготовки под проект.
Dromok писал(а):Более неудобного фреймворка еще не встречал. Даже для элементарной выборки данных требуется писать страшный и длинный на вид вызов, для примера:

Код: Выделить всё

$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
 
в то время как полностью то же действие на йии выглядит коротко и красиво:

Код: Выделить всё

$product = Product::findOne(['name' => $name]); 
первый код выбирает данные из абстрактного хранилища, второй из базы данных. Первый код гибок, второй - нет.
Собственно тут тебе и надо выбрать: ты пишешь качественный проект с последующей поддержкой, либо делаешь проект, получаешь деньги и забываешь. В первом случае я бы думал об архитектуре и симфони/зенд, во втором на yii быстренько сделать.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Типа yii - круто, остальные фанатики.
Я не говорил, что Yii круто :) Я говорил, что людям с фанатичным отношением к ООП как правило нравится когда кишки наружу

Код: Выделить всё

$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
 
Видно, что тут задействованы entity manager, repository, entity. Я исключительно про это.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):
Типа yii - круто, остальные фанатики.
Я не говорил, что Yii круто :) Я говорил, что людям с фанатичным отношением к ООП как правило нравится когда кишки наружу

Код: Выделить всё

$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
Видно, что тут задействованы entity manager, repository, entity. Я исключительно про это.
суть в том, что есть проблема - абстракция от хранилища - кейс абсолютно не редкий, а очень даже частый (несколько хранилищ). И код выше решает эту проблему.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Да, именно в этом случае примеры немного неравнозначны.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Вообще качество напрямую со степенью абстракции не связано. Любую проблему можно решить дополнительным слоем абстракции кроме проблемы слишком большого количества слоёв абстракции.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Кстати, давайте честно признаемся, сколько раз кому приходилось менять хранилище в уже запущенном проекте (не продукте, который по определению должен работать на туче всего)? Мне ни разу.

Аватара пользователя
ElisDN
Сообщения: 5495
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение ElisDN »

Dromok писал(а):Также недавно потребовалось написать небольшой проектик на Zend 2 + Doctrine.
...
Но при этом почему-то зенд и симфони (а они очень похожи, так что смело можно ставить рядом) считается чуть ли не стандартом индустрии и мегакрутыми фреймворками. Кто и почему выбирает зенд и симфони? Может я чего-то не понимаю, но я в здравом уме их никогда не буду использовать для своих проектов. Хотелось бы выслушать мнение специалистов.
Ну вы же не будете себе мегафотоаппарат за 2000 баксов покупать, чтобы на аватарку Вконтакте сфотографироваться? В том-то и дело, что попробовали сделать небольшой проектик на профессиональном большом фреймворке, мощном и универсальном.

Но потом, когда-нибудь, Вам понадобятся независимые репозитории, Unit of Work, конструкторы форм, сущности с вложенными Value Objects (чтобы, наконец-то, программировать на нормальном ООП) и с настраиваемым преобразованием значений из базы и обратно, интерфейсы, гибкий и единый DI контейнер, удобный конфиг, сотни высококачественных компонентов для интеграции всего и вся. Вот тогда Вы и заметите, что в Yii2 ничего этого нет... И что фреймворк несовместим из коробки с компонентами из внешнего мира...

Сначала кинетесь дописывать это всё сами к Yii2. А потом подумаете: а зачем мне, собственно, всё это всё велосипедить самому, если можно взять фреймворк, в котором это уже придумано и оттестировано миллионами разработчиков?
Последний раз редактировалось ElisDN 2016.02.09, 15:35, всего редактировалось 4 раза.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):Вообще качество напрямую со степенью абстракции не связано. Любую проблему можно решить дополнительным слоем абстракции кроме проблемы слишком большого количества слоёв абстракции.
хороший и очевидный аргумент. любимый аргумент противников абстракции.
Я знаю для чего нужна абстракция, и применяю ее. Каждую абстракцию можно обосновать. Обосновать ненужность абстракции в каком-то случае трудно. Я сужу по генератору сайтмепов - ваше обоснование: докажите конкретную необходимость. Но абстракцию вводят не для конкретной необходимости, а именно для будущей возможной. Поскольку позже будет больно. Это и есть архитектура.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):Кстати, давайте честно признаемся, сколько раз кому приходилось менять хранилище в уже запущенном проекте (не продукте, который по определению должен работать на туче всего)? Мне ни разу.
не менять, а добавлять. Я сейчас работаю с проектом у которого два хранилища. Поэтому знаю сколько времени уйдет на перепилку проекта под второе или тупую смену хранилища в конфиге.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Обосновать ненужность абстракции в каком-то случае трудно. Я сужу по генератору сайтмепов - ваше обоснование: докажите конкретную необходимость. Но абстракцию вводят не для конкретной необходимости, а именно для будущей возможной. Поскольку позже будет больно. Это и есть архитектура.
Именно, что для будущей возможной. Задача архитектора оценить эту самую возможность. Если он уверен, что вероятность сводится у нулю, абстракцию лучше не делать. Если он подозревает, что вероятность есть, делает минимально достаточную абстракцию.

// если что, речь про viewtopic.php?f=26&t=34859&start=60
не менять, а добавлять. Я сейчас работаю с проектом у которого два хранилища. Поэтому знаю сколько времени уйдет на перепилку проекта под второе или тупую смену хранилища в конфиге.
Эти два хранилища возникли внезапно?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):Эти два хранилища возникли внезапно?
ну как решаются проблемы больших запросов? кэшированием. А когда запрос настолько большой, что там eav, мерчанты, способы доставки мерчантов, их предложения, свойства товаров, маппинг свойств маркетплейса и свойств конкретного мерчанта и проче, прочее, прочее, что превращает запрос в огромнейший, то вариант решить проблему - денормализованное хранилище с ответом в 1-10 мс.
Кто об этом думает на начальной стадии? Через год, когда возникает такая необходимость - очень сложно выпилить с фронта все эти Goods::findAll() (условно) и заменить на обращение к другому хранилищу с другим апи. Абстракция над хранилищем, внедренная во время разработки, решает эти вопросы.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

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

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение zelenin »

Sam Dark писал(а):Облегчает, но часто не решает. После попыток денормализовать, бывает, выясняется, что абстракция не торт.
вся абстракция - это GoodsRepositoryFromPostgres::findAll(), внутри которого будет например кверибилдер от yii, или GoodsRepositoryFromSolr::findAll(), внутри которого http-клиент для апи солра. Не знаю что тут может быть не торт.
Ну а главное слово все-таки - "облегчает". 2 дня или 20 - разница есть.

Аватара пользователя
samdark
Администратор
Сообщения: 9263
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение samdark »

Всё так. А вообще мы ушли от вопроса темы.

Dromok
Сообщения: 33
Зарегистрирован: 2015.06.22, 20:34

Re: Чем Zend 2 и Symfony 2 лучше Yii 2?

Сообщение Dromok »

Благодарю всех за ответы. Мне понравился ответ Сергея Протько на toster.ru на такой же вопрос, процитирую:
"Поймите, есть множество различных проектов, подходов, уровней сложности (как логики так и инфраструктуры) и в зависимости от сложности проекта выбирают инструменты, которые помогают бороться с этой сложностью, делать более качественную декомпозицию и т.д. Именно по этому Yii2 хорошо для простых проектов, Laravel - маленьких и средних (за счет меньшей связанности нежели в Yii) и Symfony/ZF2 для средних и больших. У каждого своя ниша и нет "лучше хуже", есть "хуже для конкретного случая". Делать блог на симфони явно не ок."

Вот видимо для небольших проектов, по типу магазинов и блогов, все эти сервисы (по типу как в паттерне DDD) будет лишним и только затормозит работу. А в по настоящему крупном проекте, все эти абстрактции зенда будут к месту, где всё можно разнести по отдельным сервисам и за каждым сервисом будет стоять отдельный программер или даже группа программеров.

Ответить