David Lima


Desenvolvedor Web

Por que usar PHP Data Objects?

Por que usar PHP Data Objects?

Uma classe que vem ganhando bastante popularidade na comunidade PHP ultimamente é a PDO (PHP Data Objects), mas ainda são poucos os desenvolvedores que fazem o devido uso dessa classe, então vou explicar neste post a real utilidade dessa classe, e por que ela é tão importante nas aplicações PHP.

A PDO é uma classe de abstração de dados, ou seja, ela representa uma conexão com algum servidor de banco de dados, cuidando de toda a comunicação de um sistema com este servidor.

Se você desenvolve com PHP, provavelmente sabe que a linguagem possui suporte nativo a muitos Sistemas Gerenciadores de Bancos de Dados (SGBD), como, por exemplo, Oracle,  IBM DB2, Paradox, Frontbase, PostgreSQL e o clássico MySQL. Isso é bom, mas leve em consideração que, para trabalharmos com cada um desses SGBDs no PHP, usamos um conjunto específico de funções (como mysql_connect() para MySQL e pg_connect() para o PostgreSQL), e quando se trata de portabilidade do software, isso pode ser um problema. Imagine o cenário:

Você tem um ERP rodando em MySQL, mas, depois de uma atualização, percebe que seu sistema está exigindo recursos que o MySQL não fornece, então você precisa migrar todo o seu sistema para passar a usar o PostgreSQL, ao invés do MySQL.

Sem utilizar PDO, você tem o trabalho de atualizar todos os arquivos do seu sistema que interagem com o banco de dados, reescrever cada um dos métodos ou funções que cuidam dessa interação, saindo do padrão antigo e entrando no padrão novo, e o famoso “find - replace” não vai ser lá de grande ajuda, visto que arquivos diferentes tendem a executar ações diferentes.

Já, com PDO, o trabalho que você tem é de alterar o driver de conexão de MySQL para PostgreSQL, simplesmente alterando uma única linha em todo o seu sistema. Internamente, o PHP buscará o driver que você especificou, abrirá uma conexão com o banco em questão e cuidará de todo o resto quando você precisar executar uma consulta.

Isso, além de ser prático, torna seu sistema muito mais eficiente no que diz respeito a portabilidade, ou seja, o software será compatível com praticamente todos os SGBDs existentes hoje.

Faça o possível para que sua aplicação dependa o menos possível de uma tecnologia específica, é sempre interessante ter camadas de abstração para tornar o sistema compatível com mais de uma tecnologia do mesmo tipo (como no exemplo deste post, os SGBDs), assim você evita trabalho dobrado em diferentes implementações, além de facilitar a manutenção do código e viabilizar possíveis migrações.

Para conhecer mais sobre PDO, veja a página oficial no php.net:
PHP: PDO - Manual

Outros links que podem ajudar a entender como a PDO funciona:
[DevMedia] Introdução ao PHP PDO
[iMasters] Desenvolvendo com PDO PHP Data Objects

Observação: A PDO não substitui os comandos SQL (SELECT, INSERT, UPDATE, etc), ele funciona apenas como uma camada de abstração que facilita o contato entre o seu sistema e um determinado servidor de banco de dados, e sabendo que alguns comandos SQL podem variar de cada SGBD (por exemplo, o comando CREATE TABLE é diferente do MySQL para o PostgreSQL), então fique atento às suas consultas para evitar derrubar sua aplicação! :)