EntityBrowserWizard::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 9
dl 0
loc 3
rs 10
c 0
b 0
f 0

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
namespace Drupal\entity_browser\Wizard;
4
5
use Drupal\Core\DependencyInjection\ClassResolverInterface;
6
use Drupal\Core\Entity\EntityManagerInterface;
7
use Drupal\Core\Form\FormBuilderInterface;
8
use Drupal\Core\Routing\RouteMatchInterface;
9
use Drupal\ctools\Wizard\EntityFormWizardBase;
10
use Drupal\entity_browser\Form\DisplayConfig;
11
use Drupal\entity_browser\Form\GeneralInfoConfig;
12
use Drupal\entity_browser\Form\SelectionDisplayConfig;
13
use Drupal\entity_browser\Form\WidgetsConfig;
14
use Drupal\entity_browser\Form\WidgetSelectorConfig;
15
use Drupal\user\SharedTempStoreFactory;
16
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
17
18
/**
19
 * Custom form wizard for entity browser configuration.
20
 */
21
class EntityBrowserWizard extends EntityFormWizardBase {
22
23
  /**
24
   * @param \Drupal\user\SharedTempStoreFactory $tempstore
25
   *   Tempstore Factory for keeping track of values in each step of the
26
   *   wizard.
27
   * @param \Drupal\Core\Form\FormBuilderInterface $builder
28
   *   The Form Builder.
29
   * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
30
   *   The class resolver.
31
   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
32
   *   The event dispatcher.
33
   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
34
   *   The entity manager.
35
   * @param $tempstore_id
36
   *   The shared temp store factory collection name.
37
   * @param null $machine_name
0 ignored issues
show
Bug introduced by
There is no parameter named $machine_name. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
38
   *   The SharedTempStore key for our current wizard values.
39
   * @param null $step
40
   *   The current active step of the wizard.
41
   */
42
  public function __construct(SharedTempStoreFactory $tempstore, FormBuilderInterface $builder, ClassResolverInterface $class_resolver, EventDispatcherInterface $event_dispatcher, EntityManagerInterface $entity_manager, RouteMatchInterface $route_match, $tempstore_id, $entity_browser = NULL, $step = 'general') {
43
    parent::__construct($tempstore, $builder, $class_resolver, $event_dispatcher, $entity_manager, $route_match, $tempstore_id, $entity_browser, $step);
44
  }
45
46
  /**
47
   * {@inheritdoc}
48
   */
49 View Code Duplication
  public function getNextParameters($cached_values) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
50
    $parameters = parent::getNextParameters($cached_values);
51
    $parameters['entity_browser'] = $parameters['machine_name'];
52
    unset($parameters['machine_name']);
53
    return $parameters;
54
  }
55
56
  /**
57
   * {@inheritdoc}
58
   */
59 View Code Duplication
  public function getPreviousParameters($cached_values) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
60
    $parameters = parent::getPreviousParameters($cached_values);
61
    $parameters['entity_browser'] = $parameters['machine_name'];
62
    unset($parameters['machine_name']);
63
    return $parameters;
64
  }
65
66
  /**
67
   * {@inheritdoc}
68
   */
69
  public function getWizardLabel() {
70
    return $this->t('Entity browser');
71
  }
72
73
  /**
74
   * {@inheritdoc}
75
   */
76
  public function getMachineLabel() {
77
    return $this->t('Label');
78
  }
79
80
  /**
81
   * {@inheritdoc}
82
   */
83
  public function getEntityType() {
84
    return 'entity_browser';
85
  }
86
87
  /**
88
   * {@inheritdoc}
89
   */
90
  public function exists() {
91
    return 'Drupal\entity_browser\Entity\EntityBrowser::load';
92
  }
93
94
  /**
95
   * {@inheritdoc}
96
   */
97
  public function getOperations($cached_values) {
98
    return [
99
      'general' => [
100
        'title' => $this->t('General information'),
101
        'form' => GeneralInfoConfig::class,
102
      ],
103
      'display' => [
104
        'title' => $this->t('Display'),
105
        'form' => DisplayConfig::class,
106
      ],
107
      'widget_selector' => [
108
        'title' => $this->t('Widget selector'),
109
        'form' => WidgetSelectorConfig::class,
110
      ],
111
      'selection_display' => [
112
        'title' => $this->t('Selection display'),
113
        'form' => SelectionDisplayConfig::class,
114
      ],
115
      'widgets' => [
116
        'title' => $this->t('Widgets'),
117
        'form' => WidgetsConfig::class,
118
      ],
119
    ];
120
  }
121
122
}
123