37 lines
2.0 KiB
PHP
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);
|
|
}
|
|
} |