Magento 2

ustasby

ninja cs-cart
Полез посмотреть что наваяли, и сходу
PHP:
public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
        AttributeValueFactory $customAttributeFactory,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Catalog\Api\ProductAttributeRepositoryInterface $metadataService,
        Product\Url $url,
        Product\Link $productLink,
        \Magento\Catalog\Model\Product\Configuration\Item\OptionFactory $itemOptionFactory,
        \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory,
        \Magento\Catalog\Model\Product\Option $catalogProductOption,
        \Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
        \Magento\Catalog\Model\Product\Attribute\Source\Status $catalogProductStatus,
        \Magento\Catalog\Model\Product\Media\Config $catalogProductMediaConfig,
        Product\Type $catalogProductType,
        \Magento\Framework\Module\Manager $moduleManager,
        \Magento\Catalog\Helper\Product $catalogProduct,
        Resource\Product $resource,
        Resource\Product\Collection $resourceCollection,
        \Magento\Framework\Data\CollectionFactory $collectionFactory,
        \Magento\Framework\Filesystem $filesystem,
        \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
        \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor,
        \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor,
        \Magento\Catalog\Model\Indexer\Product\Eav\Processor $productEavIndexerProcessor,
        CategoryRepositoryInterface $categoryRepository,
        Product\Image\CacheFactory $imageCacheFactory,
        \Magento\Catalog\Model\ProductLink\CollectionProvider $entityCollectionProvider,
        \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider,
        \Magento\Catalog\Api\Data\ProductLinkInterfaceFactory $productLinkFactory,
        \Magento\Catalog\Api\Data\ProductLinkExtensionFactory $productLinkExtensionFactory,
        \Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterfaceFactory $mediaGalleryEntryFactory,
        \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
        array $data = []
    ) {
        $this->metadataService = $metadataService;
        $this->_itemOptionFactory = $itemOptionFactory;
        $this->_stockItemFactory = $stockItemFactory;
        $this->_optionInstance = $catalogProductOption;
        $this->_catalogProductVisibility = $catalogProductVisibility;
        $this->_catalogProductStatus = $catalogProductStatus;
        $this->_catalogProductMediaConfig = $catalogProductMediaConfig;
        $this->_catalogProductType = $catalogProductType;
        $this->moduleManager = $moduleManager;
        $this->_catalogProduct = $catalogProduct;
        $this->_collectionFactory = $collectionFactory;
        $this->_urlModel = $url;
        $this->_linkInstance = $productLink;
        $this->_filesystem = $filesystem;
        $this->indexerRegistry = $indexerRegistry;
        $this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;
        $this->_productPriceIndexerProcessor = $productPriceIndexerProcessor;
        $this->_productEavIndexerProcessor = $productEavIndexerProcessor;
        $this->categoryRepository = $categoryRepository;
        $this->imageCacheFactory = $imageCacheFactory;
        $this->entityCollectionProvider = $entityCollectionProvider;
        $this->linkTypeProvider = $linkTypeProvider;
        $this->productLinkFactory = $productLinkFactory;
        $this->productLinkExtensionFactory = $productLinkExtensionFactory;
        $this->mediaGalleryEntryFactory = $mediaGalleryEntryFactory;
        $this->dataObjectHelper = $dataObjectHelper;
        $this->joinProcessor = $joinProcessor;
        parent::__construct(
            $context,
            $registry,
            $extensionFactory,
            $customAttributeFactory,
            $storeManager,
            $resource,
            $resourceCollection,
            $data
        );
    }
может это уже в порядке вещей, и завтра все начнут писать мегакод в стиле яджавапохуист и мы пишем крутой код?
 

AnrDaemon

Продвинутый новичок
Нет, ну, да, конечно… я ржал. Первые секунды три. Потом истерически хихикал. Потом пытался затолкать глаза обратно.
Я конечно не ангел, но я не представляю, как можно… не то что использовать - как можно написать что-то такое?…
 

scorpion-ds

Новичок
Некоторый сервисы бандлов в SF2, тоже получают в конструкторе по 7-10 объектов, но это конечно жесть какая-то ...
 

Sufir

Я не волшебник, я только учусь
Кстати, всё равно оффтоп... А что делать с сущностями у которых достаточно большое кол-во обязательных параметров, без которых её создать невозможно?
Тоже не слишком это удобно и изящно выглядит. Можно, конечно тупо массив брать, но тогда интерфейс становится не информативным и вынуждает пользователя интересоваться внутренностями класса, что бы узнать что и в каком виде тот ожидает получить.
 

AnrDaemon

Продвинутый новичок
Я только один раз с таким столкнулся, и там сущность сама себя настраивала, беря параметры из окружения. Не больно то кошерно, зато просто и недвусмысленно.
 

Adelf

Administrator
Команда форума
Это называется injection happy. Легко забыть об SRP когда так легко зависимости передаются. Надо лечить.
 

Вурдалак

Продвинутый новичок
Кстати, всё равно оффтоп... А что делать с сущностями у которых достаточно большое кол-во обязательных параметров, без которых её создать невозможно?
Тоже не слишком это удобно и изящно выглядит. Можно, конечно тупо массив брать, но тогда интерфейс становится не информативным и вынуждает пользователя интересоваться внутренностями класса, что бы узнать что и в каком виде тот ожидает получить.
Если что-то становится большим и сложным, то делают декомпозицию. В случае сущностей можно выделить отдельные свойства в композитные value object'ы, разделять сущности по контекстам. Но для сущности иметь, например, 10 свойств — это обычно терпимо. Для сервиса — нет.
 

stalxed

Новичок
Ну может этот код у них родился в процессе рефакторинга от magento 1 к magento 2.
Но если они писали magento 2 с нуля, то жесть.
Я ждал от magento 2 прорыва :(
 

Крот

Новичок
И в конце еще в довесок та-даааам - array $data = []. Мало ли забыли что-то.
 

stalxed

Новичок
@fixxxer, я о том же, рефакторинг в разы тяжелее, чем писать с нуля.
И масштаб в magento огромен.
Просмотрел первые комиты:
https://github.com/magento/magento2/blob/9b9ce2c5403ef6c47bcbf84581ebee7827dcf8c4/app/code/core/Mage/Catalog/Model/Category.php
Раньше действительно был сервис локатор, так что, я верю, что отрефакторят в нормальный вид код.
ТС зря поднимает панику :)
 

AmdY

Пью пиво
Команда форума
это версия 2, потеря совместимости, тут не до рефакторинга.

меня всегда это забавляло, у компании за счёт маркетинга выстрелил проект, появились деньги, пришло понятие что код гавно, внесение правок требует больших усилий, нужно переписывать. как бы самый момент нанять нормальных программистов, но откуда-то появляется уверенность что говнокодеры первой версии, которые с тех времён занимались только саппортом продукта вдруг начнут писать нормальный код.
 

Yoskaldyr

"Спамер"
Партнер клуба
А давно хотел спросить, а есть ли вообще какой-то движок магазина на php код которого чуть менее чем полностью гуано?
 

WMix

герр M:)ller
Партнер клуба
дефинируйте уровень гуанности
смысл писать свой шоп если был бы хороший
 

Yoskaldyr

"Спамер"
Партнер клуба
дефинируйте уровень гуанности
Я не специалист в категоризации гуано :)

А если вопрос по другому поставить какой самый лучший из доступных движков магазинов (по качеству кода и архитектуре)?
По уровню гуанности лучшего можно судить о тех что хуже.

Хотя ответ уже получен
смысл писать свой шоп если был бы хороший
 

stalxed

Новичок
@hell0w0rd, они ещё в глубочайшей разработке, и функционал их крайне скуден.
Как бе кроме магенто нет движков на которых шопы можно лепить.
 
Сверху