1010use Magento \CatalogRule \Model \Indexer \DynamicBatchSizeCalculator ;
1111use Magento \Eav \Model \Entity \Attribute \AbstractAttribute ;
1212use Magento \Framework \App \ObjectManager ;
13+ use Magento \Framework \DB \Adapter \AdapterInterface ;
1314use Magento \Framework \Exception \LocalizedException ;
1415
1516/**
1617 * Specialized product collection for catalog rule indexing
18+ *
19+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1720 */
1821class Collection extends \Magento \Catalog \Model \ResourceModel \Product \Collection
1922{
2023 /**
21- * Shared cache of AttributeValuesLoader instances across all collections
24+ * Cache of AttributeValuesLoader instances for this collection
2225 *
2326 * @var array
2427 */
25- private static array $ loaderCache = [];
28+ private array $ loaderCache = [];
2629
2730 /**
2831 * @var DynamicBatchSizeCalculator
2932 */
3033 private $ batchSizeCalculator ;
3134
3235 /**
33- * Get dynamic batch size calculator
36+ * @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
37+ * @param \Psr\Log\LoggerInterface $logger
38+ * @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
39+ * @param \Magento\Framework\Event\ManagerInterface $eventManager
40+ * @param \Magento\Eav\Model\Config $eavConfig
41+ * @param \Magento\Framework\App\ResourceConnection $resource
42+ * @param \Magento\Eav\Model\EntityFactory $eavEntityFactory
43+ * @param \Magento\Catalog\Model\ResourceModel\Helper $resourceHelper
44+ * @param \Magento\Framework\Validator\UniversalFactory $universalFactory
45+ * @param \Magento\Store\Model\StoreManagerInterface $storeManager
46+ * @param \Magento\Framework\Module\Manager $moduleManager
47+ * @param \Magento\Catalog\Model\Indexer\Product\Flat\State $catalogProductFlatState
48+ * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
49+ * @param \Magento\Catalog\Model\Product\OptionFactory $productOptionFactory
50+ * @param \Magento\Catalog\Model\ResourceModel\Url $catalogUrl
51+ * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
52+ * @param \Magento\Customer\Model\Session $customerSession
53+ * @param \Magento\Framework\Stdlib\DateTime $dateTime
54+ * @param \Magento\Customer\Api\GroupManagementInterface $groupManagement
55+ * @param DynamicBatchSizeCalculator|null $batchSizeCalculator
56+ * @param AdapterInterface|null $connection
3457 *
35- * @return DynamicBatchSizeCalculator
58+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
3659 */
37- private function getBatchSizeCalculator (): DynamicBatchSizeCalculator
38- {
39- if ($ this ->batchSizeCalculator === null ) {
40- $ this ->batchSizeCalculator = ObjectManager::getInstance ()
41- ->get (DynamicBatchSizeCalculator::class);
42- }
43- return $ this ->batchSizeCalculator ;
60+ public function __construct (
61+ \Magento \Framework \Data \Collection \EntityFactory $ entityFactory ,
62+ \Psr \Log \LoggerInterface $ logger ,
63+ \Magento \Framework \Data \Collection \Db \FetchStrategyInterface $ fetchStrategy ,
64+ \Magento \Framework \Event \ManagerInterface $ eventManager ,
65+ \Magento \Eav \Model \Config $ eavConfig ,
66+ \Magento \Framework \App \ResourceConnection $ resource ,
67+ \Magento \Eav \Model \EntityFactory $ eavEntityFactory ,
68+ \Magento \Catalog \Model \ResourceModel \Helper $ resourceHelper ,
69+ \Magento \Framework \Validator \UniversalFactory $ universalFactory ,
70+ \Magento \Store \Model \StoreManagerInterface $ storeManager ,
71+ \Magento \Framework \Module \Manager $ moduleManager ,
72+ \Magento \Catalog \Model \Indexer \Product \Flat \State $ catalogProductFlatState ,
73+ \Magento \Framework \App \Config \ScopeConfigInterface $ scopeConfig ,
74+ \Magento \Catalog \Model \Product \OptionFactory $ productOptionFactory ,
75+ \Magento \Catalog \Model \ResourceModel \Url $ catalogUrl ,
76+ \Magento \Framework \Stdlib \DateTime \TimezoneInterface $ localeDate ,
77+ \Magento \Customer \Model \Session $ customerSession ,
78+ \Magento \Framework \Stdlib \DateTime $ dateTime ,
79+ \Magento \Customer \Api \GroupManagementInterface $ groupManagement ,
80+ ?DynamicBatchSizeCalculator $ batchSizeCalculator = null ,
81+ ?AdapterInterface $ connection = null
82+ ) {
83+ parent ::__construct (
84+ $ entityFactory ,
85+ $ logger ,
86+ $ fetchStrategy ,
87+ $ eventManager ,
88+ $ eavConfig ,
89+ $ resource ,
90+ $ eavEntityFactory ,
91+ $ resourceHelper ,
92+ $ universalFactory ,
93+ $ storeManager ,
94+ $ moduleManager ,
95+ $ catalogProductFlatState ,
96+ $ scopeConfig ,
97+ $ productOptionFactory ,
98+ $ catalogUrl ,
99+ $ localeDate ,
100+ $ customerSession ,
101+ $ dateTime ,
102+ $ groupManagement ,
103+ $ connection
104+ );
105+ $ this ->batchSizeCalculator = $ batchSizeCalculator ??
106+ ObjectManager::getInstance ()->get (DynamicBatchSizeCalculator::class);
44107 }
45108
46109 /**
@@ -58,14 +121,14 @@ public function getAllAttributeValues($attribute)
58121
59122 $ attributeId = (int )$ attribute ->getId ();
60123
61- if (!isset (self :: $ loaderCache [$ attributeId ])) {
62- self :: $ loaderCache [$ attributeId ] = new AttributeValuesLoader (
124+ if (!isset ($ this -> loaderCache [$ attributeId ])) {
125+ $ this -> loaderCache [$ attributeId ] = new AttributeValuesLoader (
63126 $ this ,
64127 $ attribute ,
65- $ this ->getBatchSizeCalculator ()
128+ $ this ->batchSizeCalculator
66129 );
67130 }
68131
69- return self :: $ loaderCache [$ attributeId ];
132+ return $ this -> loaderCache [$ attributeId ];
70133 }
71134}
0 commit comments