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.
Serviços Personalizados
,
Drupal
,
Desenvolvimento Backend
Compartilhar esse artigo
- Log in ou registre-se para comentar