Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como configurar corretamente uma conexão PDO

O objetivo


A meu ver, seu objetivo neste caso é duplo:
  • criar e manter uma conexão única/reutilizável por banco de dados
  • certifique-se de que a conexão foi configurada corretamente

Solução


Eu recomendaria usar a função anônima e o padrão de fábrica para lidar com a conexão PDO. O uso dele ficaria assim:
$provider = function()
{
    $instance = new PDO('mysql:......;charset=utf8', 'username', 'password');
    $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    return $instance;
};

$factory = new StructureFactory( $provider );

Em seguida, em um arquivo diferente ou inferior no mesmo arquivo:
$something = $factory->create('Something');
$foobar = $factory->create('Foobar');

A própria fábrica deve ser algo assim:
class StructureFactory
{
    protected $provider = null;
    protected $connection = null;

    public function __construct( callable $provider )
    {
        $this->provider = $provider;
    }

    public function create( $name)
    {
        if ( $this->connection === null )
        {
            $this->connection = call_user_func( $this->provider );
        }
        return new $name( $this->connection );
    }

}

Dessa forma, você teria uma estrutura centralizada, que garante que a conexão seja criada apenas quando necessário. Também tornaria o processo de teste de unidade e manutenção muito mais fácil.

O provedor neste caso seria encontrado em algum lugar no estágio de bootstrap. Essa abordagem também forneceria um local claro onde definir a configuração que você usa para se conectar ao banco de dados.

Lembre-se de que este é um exemplo extremamente simplificado . Você também pode se beneficiar assistindo aos dois vídeos a seguir:

Além disso, recomendo fortemente a leitura de um tutorial adequado sobre o uso do PDO (há um log de mau tutorial online).