Код: Выделить всё
$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
Код: Выделить всё
$product = Product::findOne(['name' => $name]);
Код: Выделить всё
$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
Код: Выделить всё
$product = Product::findOne(['name' => $name]);
Уже объясняли.Onotole писал(а):Ща Зеленин придет, объяснит)
вот пошла отличная аргументированная дискуссия. Типа yii - круто, остальные фанатики. Человек именно за таким ответом и пришел )Sam Dark писал(а):Выбирают их прежде всего приверженцы фанатичного предельно правильного ООП вне зависимости от задачи. Они пытаются сходу сделать свой код максимально гибким вне зависимости от того, пригодится ли гибкость или нет. Иногда это приходится кстати, иногда нет.
в первый раз. если нет своей заготовки под проект.Dromok писал(а):Но реально чтобы писать на зенде требуется раза в три больше времени, чем аналогичный проект на yii.
первый код выбирает данные из абстрактного хранилища, второй из базы данных. Первый код гибок, второй - нет.Dromok писал(а):Более неудобного фреймворка еще не встречал. Даже для элементарной выборки данных требуется писать страшный и длинный на вид вызов, для примера:в то время как полностью то же действие на йии выглядит коротко и красиво:Код: Выделить всё
$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
Код: Выделить всё
$product = Product::findOne(['name' => $name]);
Я не говорил, что Yii круто Я говорил, что людям с фанатичным отношением к ООП как правило нравится когда кишки наружуТипа yii - круто, остальные фанатики.
Код: Выделить всё
$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
суть в том, что есть проблема - абстракция от хранилища - кейс абсолютно не редкий, а очень даже частый (несколько хранилищ). И код выше решает эту проблему.Sam Dark писал(а):Я не говорил, что Yii круто Я говорил, что людям с фанатичным отношением к ООП как правило нравится когда кишки наружуТипа yii - круто, остальные фанатики.
Видно, что тут задействованы entity manager, repository, entity. Я исключительно про это.Код: Выделить всё
$product = $this->getEntityManager()->getRepository('Application\Entity\Product')->findBy(['name' => $name]);
Ну вы же не будете себе мегафотоаппарат за 2000 баксов покупать, чтобы на аватарку Вконтакте сфотографироваться? В том-то и дело, что попробовали сделать небольшой проектик на профессиональном большом фреймворке, мощном и универсальном.Dromok писал(а):Также недавно потребовалось написать небольшой проектик на Zend 2 + Doctrine.
...
Но при этом почему-то зенд и симфони (а они очень похожи, так что смело можно ставить рядом) считается чуть ли не стандартом индустрии и мегакрутыми фреймворками. Кто и почему выбирает зенд и симфони? Может я чего-то не понимаю, но я в здравом уме их никогда не буду использовать для своих проектов. Хотелось бы выслушать мнение специалистов.
хороший и очевидный аргумент. любимый аргумент противников абстракции.Sam Dark писал(а):Вообще качество напрямую со степенью абстракции не связано. Любую проблему можно решить дополнительным слоем абстракции кроме проблемы слишком большого количества слоёв абстракции.
не менять, а добавлять. Я сейчас работаю с проектом у которого два хранилища. Поэтому знаю сколько времени уйдет на перепилку проекта под второе или тупую смену хранилища в конфиге.Sam Dark писал(а):Кстати, давайте честно признаемся, сколько раз кому приходилось менять хранилище в уже запущенном проекте (не продукте, который по определению должен работать на туче всего)? Мне ни разу.
Именно, что для будущей возможной. Задача архитектора оценить эту самую возможность. Если он уверен, что вероятность сводится у нулю, абстракцию лучше не делать. Если он подозревает, что вероятность есть, делает минимально достаточную абстракцию.Обосновать ненужность абстракции в каком-то случае трудно. Я сужу по генератору сайтмепов - ваше обоснование: докажите конкретную необходимость. Но абстракцию вводят не для конкретной необходимости, а именно для будущей возможной. Поскольку позже будет больно. Это и есть архитектура.
Эти два хранилища возникли внезапно?не менять, а добавлять. Я сейчас работаю с проектом у которого два хранилища. Поэтому знаю сколько времени уйдет на перепилку проекта под второе или тупую смену хранилища в конфиге.
ну как решаются проблемы больших запросов? кэшированием. А когда запрос настолько большой, что там eav, мерчанты, способы доставки мерчантов, их предложения, свойства товаров, маппинг свойств маркетплейса и свойств конкретного мерчанта и проче, прочее, прочее, что превращает запрос в огромнейший, то вариант решить проблему - денормализованное хранилище с ответом в 1-10 мс.Sam Dark писал(а):Эти два хранилища возникли внезапно?
вся абстракция - это GoodsRepositoryFromPostgres::findAll(), внутри которого будет например кверибилдер от yii, или GoodsRepositoryFromSolr::findAll(), внутри которого http-клиент для апи солра. Не знаю что тут может быть не торт.Sam Dark писал(а):Облегчает, но часто не решает. После попыток денормализовать, бывает, выясняется, что абстракция не торт.