Criando Serviços Personalizados no Drupal

1 min read

Os serviços são os blocos de construção de uma aplicação Drupal. Ao criar serviços personalizados, você pode estender o Drupal de maneiras poderosas, fornecendo funcionalidades reutilizáveis que podem ser injetadas em qualquer parte do sistema.

**Definindo um Serviço Personalizado**

Os serviços são definidos em arquivos `*.services.yml`. Aqui está um exemplo de definição de um serviço personalizado:

```yaml
services:
 mymodule.custom_service:
   class: Drupal\mymodule\CustomService
   arguments: ['@entity_type.manager']

 

Implementando o Serviço Personalizado

O serviço personalizado é implementado como uma classe PHP. Esta classe pode injetar outros serviços através de seu construtor:

namespace Drupal\mymodule;

use Drupal\Core\Entity\EntityTypeManagerInterface;

class CustomService {
 protected $entityTypeManager;
 public function __construct(EntityTypeManagerInterface $entity_type_manager) {
   $this->entityTypeManager = $entity_type_manager;
 }
 public function doSomething() {
   // Use o serviço injetado para realizar uma tarefa
   $nodes = $this->entityTypeManager->getStorage('node')->loadMultiple();
   // Lógica adicional aqui
 }
}

 

Usando o Serviço Personalizado

Uma vez definido o serviço, você pode injetá-lo em outras classes, como controladores ou formulários, e chamar seus métodos:

namespace Drupal\mymodule\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\mymodule\CustomService;

class MyController extends ControllerBase {
 protected $customService;
 public function __construct(CustomService $custom_service) {
   $this->customService = $custom_service;
 }
 public static function create(ContainerInterface $container) {
   return new static(
     $container->get('mymodule.custom_service')
   );
 }
 public function page() {
   $this->customService->doSomething();
   return [
     '#markup' => $this->t('Serviço personalizado executado com sucesso.'),
   ];
 }
}

 

Criar serviços personalizados no Drupal permite código limpo, reutilizável e testável, melhorando a arquitetura geral da aplicação.

Compartilhar esse artigo