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