Serviço
O serviço é um recurso fundamental para gerenciar regras de negócio. Trata-se de uma classe que pode ser invocada por meio de uma chave via contêiner, e que fica disponível em qualquer módulo da plataforma Badiu.Net.
Para criar um serviço, basta desenvolver uma classe e registrá-la. O acesso à classe por meio da chave, via contêiner, equivale à sua instanciação no paradigma da programação orientada a objetos.
1. Criar classe
A seguir, apresentamos um serviço já existente para ilustrar o processo. A partir dele, você poderá reutilizar a lógica e customizar um serviço específico para o seu módulo.
O exemplo abaixo refere-se ao serviço de gerenciamento de tags. A classe foi criada em:
BADIUNET_DIR_INSTALL/Badiu/System/ModuleBundle/Model/Lib/TagManagerLib.php
<?php
namespace Badiu\System\ModuleBundle\Model\Lib;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Badiu\System\CoreBundle\Model\Functionality\BadiuModelLib;
class TagManagerLib extends BadiuModelLib {
function __construct(Container $container) {
parent::__construct($container);
}
public function add($param) {
// lógica para adicionar tag
}
public function get($param) {
// lógica para recuperar tag
}
}
Na classe, a lógica é organizada em funções. Neste exemplo, temos as funções add e get. No seu caso, crie as funções que melhor representem a lógica do seu negócio.
2. Registro do serviço
badiu.system.module.tag.lib.manager:
class: Badiu\System\ModuleBundle\Model\Lib\TagManagerLib
shared: false
public: true
arguments: ['@service_container']
O serviço deve ser registrado no arquivo services.yml, com a chave seguindo o padrão de nomenclatura da plataforma Badiu.Net.
3. Invocar serviço
$tagmanager = $this->getContainer()->get('badiu.system.module.tag.lib.manager');
$param = array();
$tagmanager->add($param);
Dessa forma, a lógica de negócio é organizada de maneira flexível e reutilizável. Como o serviço é invocado por meio de uma chave do tipo string, a chamada pode ser feita dinamicamente, o que amplia a flexibilidade da aplicação.