πŸ‡ΊπŸ‡¦

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:
<?php
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)
Short name
service