first commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user