Files
workbloomerp-backend/app/Shared/Database/DBFactory.php
T
Claudecio Martins a951944997 first commit
2026-06-16 10:04:10 -03:00

37 lines
2.0 KiB
PHP

<?php
namespace WorkbloomERP\Database;
use WorkbloomERP\Services\DBService;
class DBFactory {
/**
* Método para criação simplificada de instâncias do serviço de banco de dados.
*
* Este método implementa o padrão de projeto Factory, permitindo que o desenvolvedor obtenha
* uma instância pronta do **DBService** sem a necessidade de gerenciar manualmente o operador `new`.
* Sua principal vantagem é a flexibilidade para alternar entre diferentes conexões e esquemas
* (schemas) de banco de dados através de parâmetros opcionais, facilitando a operação em
* ambientes multi-banco ou arquiteturas multi-tenant.
*
*
*
* ---
* ## Funcionalidades Principais
* 1. **Abstração de Instanciação:** Centraliza a criação do objeto, permitindo futuras implementações de Singletons ou Service Locators sem quebrar o código cliente.
* 2. **Configuração On-the-fly:** Permite definir a conexão (ex: 'mysql_prod', 'sqlite_test') e o schema de trabalho no momento da criação.
* 3. **Fluidez:** Ideal para ser utilizado em chamadas encadeadas (ex: `DBService::make()->select(...)`), tornando o código mais legível e conciso.
*
* ---
* ## Exemplos de Uso
* - **Conexão Padrão:** `DBService::make();` (Utiliza as definições default da classe).
* - **Esquema Específico:** `DBService::make('', 'vendas');` (Mantém a conexão padrão, mas aponta para o schema de vendas).
* - **Conexão Externa:** `DBService::make('external_db', 'public');`
*
* @param string $connection Identificador da conexão configurada no sistema.
* @param string $schema Nome do esquema de banco de dados a ser selecionado.
* @return DBService Uma nova instância do serviço de banco de dados configurada.
*/
public static function make(string $connection = 'DEFAULT', string $schema = 'shared'): DBService {
return new DBService(connection: $connection, schema: $schema);
}
}