Service
32 sites
Security covered
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)