Use Dependency Injection instead of \Drupal::service method

Created on 9 August 2024, 7 months ago
Updated 19 September 2024, 5 months ago

Problem/Motivation

All services must use dependency injection.

Steps to reproduce

Look for usages of Drupal::service in the code:

grep "\Drupal::service" * -r                                                                                                                                                      ─╯
languagewire_translation_provider.module:      $projectRepository = \Drupal::service('languagewire.project_repository');
languagewire_translation_provider.module:  $projectSpecificationFactory = \Drupal::service('languagewire.project_specification_factory');
languagewire_translation_provider.module:    $projectSpecificationFactory      = \Drupal::service('languagewire.project_specification_factory');
languagewire_translation_provider.module:    $projectSpecificationFactory = \Drupal::service('languagewire.project_specification_factory');
languagewire_translation_provider.module:    $projectTemplateRepository = \Drupal::service('languagewire.project_template_repository');
languagewire_translation_provider.module:    $htmlPreviewService = \Drupal::service('languagewire.html_preview_service');
languagewire_translation_provider.module:    $temporaryArtifactsCleaner = \Drupal::service('languagewire.html_preview_temporary_artifacts_cleaner');
languagewire_translation_provider.module:        \Drupal::service('languagewire.project_repository'),
languagewire_translation_provider.module:        \Drupal::service('languagewire.document_repository')
languagewire_translation_provider.module:    \Drupal::service('languagewire.project_repository'),
languagewire_translation_provider.module:    $projectRepository = \Drupal::service('languagewire.project_repository');
languagewire_translation_provider.module:        \Drupal::service('languagewire.project_repository'),
languagewire_translation_provider.module:    return \Drupal::service('languagewire.drupal.system');
src/Ui/LanguageWireTranslatorUi.php:    $this->system = \Drupal::service('languagewire.drupal.system');
src/Ui/LanguageWireTranslatorUi.php:    $this->jobInfoUi = \Drupal::service('languagewire.job_info_ui');
src/Ui/LanguageWireTranslatorUi.php:    $this->configurationFormUi = \Drupal::service('languagewire.configuration_form_ui');
src/Ui/LanguageWireTranslatorUi.php:    $this->checkoutUi = \Drupal::service('languagewire.checkout_ui');
src/Ui/CheckoutUi.php:    $this->dateFormatter = \Drupal::service('date.formatter');
src/Ui/ConfigurationFormUi.php:    $icon = \Drupal::service('renderer')->render($warningIconConfig);
src/Adapter/System.php:      $moduleInfo = \Drupal::service('extension.list.module')->getExtensionInfo($moduleName);
src/Adapter/System.php:    return \Drupal::service('file_system')->realpath($path) ?: '';
src/Adapter/TMGMT/TmgmtJob.php:    $dataFlatter = \Drupal::service('tmgmt.data');
src/Adapter/TMGMT/TmgmtJobItem.php:    $tmgmtDataService = \Drupal::service('tmgmt.data');

Proposed resolution

Use DI.

Example of similar problem fixed in another module: https://www.drupal.org/project/image_base64_formatter/issues/3071541 📌 Replace \Drupal::service('file_system') with Dependency Injection (DI) Fixed

Any dependency should be injectable, if not that case should be treated separately.

Remaining tasks

TBD.

🐛 Bug report
Status

Fixed

Component

Code

Created by

🇪🇸Spain tunic Madrid

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Production build 0.71.5 2024