Conectando com mais um Banco de Dados ao mesmo tempo - bjverde/formDin GitHub Wiki
No capitulo Conectando no Banco de Dados vimos como são definidos os parâmetros para conectar em apenas um banco ou conexão default. Nessa situação não precisamos fazer nada, pois o formDin sabe qual conexão de banco usar.
Atenção os componentes geralmente usam apenas a conexão default. Abaixo uma lista de componentes
- combinarSelects
- Autocomplete
- Online Search
- Autocomplete composto com Online Search
Conectando com mais um Banco de Dados ao mesmo tempo
Quando temos mais de uma conexão precisamos informar para cada método da DAO qual será a conexão usada.
Conexão default
No exemplo abaixo mostra como informar que deseja usar conexão default. Lembrando a conexão default deve ser informada no APLICACAO/includes/config_conexao.php
mais informações em Conectando no Banco de Dados. Para isso será utilizado método parent::connect(null,true,null,null);
public static function selectNovos( $datInicio, $datFim ) {
parent::connect(null,true,null,null);
$sql = self::getSqlSelectNovos($datInicio, $datFim);
$result = self::executeSql($sql);
return $result;
}
Conexão adicional
Abaixo um código de exemplo, onde uma classe DAO utiliza outra conexão diferente da conexão default.
Uma boa pratica é concentrar todas as configurações em um único ponto. Veja mais informações em Usando arquivo de configuração ou arquivo INI. , o método ServidorConfig::getInstancia()->getPerfilAcesso()
procura fazer isso.
private $tpdo = null;
public function __construct() {
$tpdo = New TPDOConnectionObj();
$tpdo->setDBMS(DBMS_MYSQL);
$tpdo->setHost('127.0.0.1');
$tpdo->setDataBaseName('form_exemplo');
$tpdo->setUsername('form_exemplo');
$tpdo->setPassword('123456');
$tpdo->connect();
$this->setTPDOConnection($tpdo);
}
public function getTPDOConnection()
{
return $this->tpdo;
}
public function setTPDOConnection($TPDOConnection)
{
$this->tpdo = $TPDOConnection;
}
O método getInfoConnect()
recebe as informações e disponibiliza para a DAO.
public static function getInfoConnect() {
$perfilBancoAcesso = ServidorConfig::getInstancia()->getPerfilAcesso();
$configArray= array(
'DBMS' => $perfilBancoAcesso['DBMS']
,'PORT' => $perfilBancoAcesso['PORT']
,'HOST' => $perfilBancoAcesso['HOST']
,'DATABASE' => $perfilBancoAcesso['DATABASE']
,'USERNAME' => $perfilBancoAcesso['USERNAME']
,'PASSWORD' => $perfilBancoAcesso['PASSWORD']
);
return $configArray;
}
No exemplo abaixo o método getUltimoArtigoModificadoJ3()
recebe as informações do getInfoConnect()
e faz uso do parent::connect
.
public static function getUltimoArtigoModificadoJ3() {
$configFile = null;
$boolRequired = true;
$boolUtfDecode = null;
$configArray = self::getInfoConnect();
parent::connect($configFile,$boolRequired,$boolUtfDecode,$configArray);
$sql = self::getSQLUltimoArtigoModificadoJ3();
$result = self::executeSql($sql);
$result = self::selectArtigoById( $result['ID'][0] );
return $result;
}
parent::connect
Explicando o Como foi visto no padrão formDin toda classe estendem TPDOConnection. O método parent::connect
pertence a classe TPDOConnection
.
EVITE USAR vários arquivos configFile para conectar em vários bancos. O primeiro parâmetro $configFile
existe por uma questão de retro compatibilidade.
/***
* Establishes the connection to the database. the main connection is informed in $configfile
* the secondary connections are informed in $configArray. The $configArray prevails over $configfile.
* In this case $configfile will be ignored.
*
* @param string $configFile - path of file with main connection,
* @param boolean $boolRequired - connection is mandatory
* @param boolean $boolUtfDecode-
* @param array $configArray - config array for others connections
* @return boolean
*/
Usando arquivo de configuração ou arquivo INI.
Uma boa pratica é usar um arquivo com todos os parâmetros de configuração. Assim será fácil achar e alterar as configurações. Entre as possíveis configurações está as informações de acesso ao banco de dados.
As opções mais comuns são:
- Arquivo texto do tipo INI. Geralmente
NOME.INI
- Arquivo PHP retornando um Array PHP. Exemplos de como no caso do Laravel FrameWork, Joomla CMS ou WordPress
Referencias
- http://php.net/manual/pt_BR/function.parse-ini-file.php
- http://www.php.com.br/view_12?ler-o-conteudo-de-arquivos-ini
- http://rberaldo.com.br/arquivos-ini-processando-arquivos-de-configuracao-com-php/