ImportProcessor::__construct()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 39
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 39
rs 8.8571
c 0
b 0
f 0
ccs 0
cts 35
cp 0
cc 1
eloc 32
nc 1
nop 14
crap 2

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
/**
4
 * TechDivision\Import\Model\Services\ImportProcessor
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import-cli-magento
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Model\Services;
22
23
use Magento\Framework\App\ResourceConnection;
24
use TechDivision\Import\Assembler\CategoryAssembler;
25
use TechDivision\Import\Repositories\CategoryRepository;
26
use TechDivision\Import\Repositories\CategoryVarcharRepository;
27
use TechDivision\Import\Repositories\EavAttributeRepository;
28
use TechDivision\Import\Repositories\EavAttributeSetRepository;
29
use TechDivision\Import\Repositories\EavAttributeGroupRepository;
30
use TechDivision\Import\Repositories\EavEntityTypeRepository;
31
use TechDivision\Import\Repositories\StoreRepository;
32
use TechDivision\Import\Repositories\StoreWebsiteRepository;
33
use TechDivision\Import\Repositories\TaxClassRepository;
34
use TechDivision\Import\Repositories\LinkTypeRepository;
35
use TechDivision\Import\Repositories\LinkAttributeRepository;
36
use TechDivision\Import\Repositories\CoreConfigDataRepository;
37
38
use TechDivision\Import\Services\ImportProcessor as GenericImportProcessor;
39
40
/**
41
 * Processor implementation to load global data.
42
 *
43
 * @author    Tim Wagner <[email protected]>
44
 * @copyright 2016 TechDivision GmbH <[email protected]>
45
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
46
 * @link      https://github.com/techdivision/import-cli-magento
47
 * @link      http://www.techdivision.com
48
 */
49
class ImportProcessor extends GenericImportProcessor
50
{
51
52
    /**
53
     * Initialize the processor with the necessary assembler and repository instances.
54
     *
55
     * @param \Magento\Framework\App\ResourceConnection                     $connection                  The connection to use
56
     * @param \TechDivision\Import\Assembler\CategoryAssembler              $categoryAssembler           The category assembler instance
57
     * @param \TechDivision\Import\Repositories\CategoryRepository          $categoryRepository          The repository to access categories
58
     * @param \TechDivision\Import\Repositories\CategoryVarcharRepository   $categoryVarcharRepository   The repository to access category varchar values
59
     * @param \TechDivision\Import\Repositories\EavAttributeRepository      $eavAttributeRepository      The repository to access EAV attributes
60
     * @param \TechDivision\Import\Repositories\EavAttributeSetRepository   $eavAttributeSetRepository   The repository to access EAV attribute sets
61
     * @param \TechDivision\Import\Repositories\EavAttributeGroupRepository $eavAttributeGroupRepository The repository to access EAV attribute groups
62
     * @param \TechDivision\Import\Repositories\EavEntityTypeRepository     $eavEntityTypeRepository     The repository to access EAV entity types
63
     * @param \TechDivision\Import\Repositories\StoreRepository             $storeRepository             The repository to access stores
64
     * @param \TechDivision\Import\Repositories\StoreWebsiteRepository      $storeWebsiteRepository      The repository to access store websites
65
     * @param \TechDivision\Import\Repositories\TaxClassRepository          $taxClassRepository          The repository to access tax classes
66
     * @param \TechDivision\Import\Repositories\LinkTypeRepository          $linkTypeRepository          The repository to access link types
67
     * @param \TechDivision\Import\Repositories\LinkAttributeRepository     $linkAttributeRepository     The repository to access link attributes
68
     * @param \TechDivision\Import\Repositories\CoreConfigDataRepository    $coreConfigDataRepository    The repository to access the configuration
69
     */
70
    public function __construct(
71
        ResourceConnection $connection,
72
        CategoryAssembler $categoryAssembler,
73
        CategoryRepository $categoryRepository,
74
        CategoryVarcharRepository $categoryVarcharRepository,
75
        EavAttributeRepository $eavAttributeRepository,
76
        EavAttributeSetRepository $eavAttributeSetRepository,
77
        EavAttributeGroupRepository $eavAttributeGroupRepository,
78
        EavEntityTypeRepository $eavEntityTypeRepository,
79
        StoreRepository $storeRepository,
80
        StoreWebsiteRepository $storeWebsiteRepository,
81
        TaxClassRepository $taxClassRepository,
82
        LinkTypeRepository $linkTypeRepository,
83
        LinkAttributeRepository $linkAttributeRepository,
84
        CoreConfigDataRepository $coreConfigDataRepository
85
    ) {
86
87
        // initialize the PDO connection
88
        $connection = $this->connection->getConnection(ResourceConnection::DEFAULT_CONNECTION)
0 ignored issues
show
Bug introduced by
The method getConnection() does not seem to exist on object<TechDivision\Impo...on\ConnectionInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
89
                                       ->getConnection();
90
91
        // pass the arguments to the parent class
92
        parent::__construct(
93
            $connection,
94
            $categoryAssembler,
95
            $categoryRepository,
96
            $categoryVarcharRepository,
97
            $eavAttributeRepository,
98
            $eavAttributeSetRepository,
99
            $eavAttributeGroupRepository,
100
            $eavEntityTypeRepository,
101
            $storeRepository,
102
            $storeWebsiteRepository,
103
            $taxClassRepository,
104
            $linkTypeRepository,
105
            $linkAttributeRepository,
106
            $coreConfigDataRepository
107
        );
108
    }
109
}
110