A importância da PDO (a.k.a PHP Data Objects)


A PDO é uma extensão do PHP para realizar a conexão com um banco de dados, o seu propósito é facilitar o acesso a uma conexão de forma padronizada e possibilitar a troca entre diferentes banco de dados. Essa flexibilidade de troca é possível porque a PDO abstraí a conexão, ou seja, ela ignora detalhes e fornece objetos que trabalham da mesma forma independente do banco de dados que é conectado.

A PDO e seus componentes (kit completo)

Quando se fala na PDO, geralmente está se falando dela como uma extensão do PHP, porém existe a classe chamada PDO que é a principal para realizar a conexão com o banco de dados. Fazer essa distinção ajuda a entender melhor as coisas. Entre as classes que compõem a PDO como uma extensão estão:

  • PDO: é a classe principal da extensão, ela faz a conexão com o banco de dados e interage com ele podendo retornar uma instância PDOStatement para manipular os resultados de uma consulta.

  • PDOStatement: classe que é utilizada para realizar e manipular uma consulta no banco de dados. Ela funciona através da separação de valores das strings com as consultas SQL.

  • PDOException: classe que serve para definir um tipo específico de exception para ser capturada/tratada no código.

A PDO vs. funções nativas para acesso a banco de dados

Trabalhar com a PDO é essencial, pois o PHP tornou obsoleto as funções nativas antigas para trabalhar com MySQL. Além disso, trabalhar com essas funções que são específicas deixam o código preso ao banco de dados referente a função (que no caso é o MySQL).

Outra vantagem é que usar a PDO evita a necessidade de mudar todas as funções mysql_* caso o banco de dados tenha que ser trocado. Isso evita um trabalho grande de alterações no código caso essa situação surgir em um projeto.

A PDO como abstração

Como foi mencionado nesse outro artigo a PDO é uma abstração, pois ela foca em uma funcionalidade ignorando os seus detalhes, sendo um exemplo de que é possível criar abstrações com classes concretas (sem interfaces ou classes abstratas), já que ela é uma classe concreta que abstraí detalhes.


ver todos os posts
Publicado em 12/06/2021