Skip to main content
drupalreleases

Use direct release data with your AI assistant.

Learn more

Service

Security covered Under active development 25 sites

Part of the Service ecosystem · 4 projects

This module provides convenient traits and base classes to simplify dependency injection in Drupal, making it easier to manage and inject services into your custom code. It offers pre-built solutions that streamline common injection patterns.

πŸ‡ΊπŸ‡¦

This module is maintained by Ukrainian developers.
Please consider supporting Ukraine in a fight for their freedom and safety of Europe.

The module provides traits and extended base classes to make dependency injections easier.

Post-Installation

Example of using this module in a block class:

namespace Drupal\hello_world\Plugin\Block;

use Drupal\Core\Block\Attribute\Block;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\service\BlockBase;
use Drupal\service\ConfigFactoryTrait;
use Drupal\service\EntityTypeManagerTrait;
use Drupal\service\UserDataTrait;

/**
 * Provides a 'Hello World' block.
 */
#[Block(
  id: "hello_world_block",
  admin_label: new TranslatableMarkup("Hello World"),
)]
class HelloWorldBlock extends BlockBase {

  use ConfigFactoryTrait;
  use EntityTypeManagerTrait;
  use UserDataTrait;

  /**
   * {@inheritdoc}
   */
  protected function creation(): static {
    return $this
      ->addConfigFactory()
      ->addEntityTypeManager()
      ->addUserData();
  }

  /**
   * {@inheritdoc}
   */
  public function build(): array {
    $ids = ($storage = $this->entityTypeManager()->getStorage('user'))
      ->getQuery()
      ->accessCheck()
      ->condition('uid', 0, '>')
      ->sort('created', 'DESC')
      ->range(0, $this->configFactory()->get('hello_world')->get('limit') ?? 10)
      ->execute();

    if ($ids) {
      $phrase = $this->t('hello, world!');
    }

    return [
      '#theme' => 'item_list',
      '#title' => $this->t('Greetings to all users!'),
      '#items' => array_map(
        fn(int $id): TranslatableMarkup => $this->t('@username says: @phrase', [
          '@username' => $storage->load($id)->getDisplayName(),
          '@phrase' => $this->userData()->get('hello_world', $id, 'phrase') ?? $phrase,
        ]),
        $ids,
      ),
    ];
  }

}

Additional Requirements

  • PHP 8.3 or higher (for version 3.0.0)
  • PHP 8.2 or higher (for version from 1.0.0 to 1.0.3 and 2.0.0 or newer)
  • PHP 5.5 or higher (for version 1.0.4 or newer)
Drupal 8–11

Ask your assistant about Service

Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

6 tracked projects depend on this one

Activity

Tracked releases
19
Tracked since
Oct 2023
Latest release
1 year ago
Releases (12 mo)
0 ▼ from 8
Maintenance
Dormant

Release Timeline

Releases

Version Type Core PHP Release date
1.0.5 Stable 8–11 Sep 30, 2024
1.0.4 Stable 8–11 Jul 15, 2024
2.0.0 Stable 8–11 PHP 8.2 Jul 15, 2024
2.0.x-dev Dev 8–11 PHP 8.2 Jul 15, 2024
1.0.3 Stable 8–11 PHP 8.2 May 25, 2024
1.0.2 Stable 10 PHP 8.2 Dec 26, 2023
1.0.1 Stable 10 PHP 8.2 Nov 22, 2023
1.0.0 Stable 10 Nov 13, 2023
1.0.x-dev Dev 8–11 Oct 31, 2023