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;
    }

Explicando o parent::connect

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

Próxima etapa ?

19 - Automatizando a criação de aplicação