PHP Data Object (PDO) de maneira Produtiva: boas práticas e produtividade na interação com a camada de dados — Parte 1

Sérgio Danilo Jr.
3 min readJan 16, 2021

--

From unsplash.com

Se você é programador(a) e alguma vez trabalhou com PHP é bem provável que já tenha utilizado PDO. Essa interface realmente facilita a vida para interagir com o banco de dados. Com uma API bem definida e de uma flexibilidade absurdamente interativa.

No entanto, ainda se vê muito a sua má utilização, ou, melhor dizendo, uma forma não muito produtiva de utilizá-la. Esta publicação de longe quer trazer um modelo de utilização, mas sim exemplificar uma forma componentizada e flexível de trabalhar com o PDO com total transparência e flexibilidade. Transformando a sua interação com o Banco de dados mais didática, manutenível e propor um uso bem abstraído desta funcionalidade presente em, praticamente, todas a aplicações programadas em PHP a partir da versão 5 (no entanto aqui faço uso da versão 7.1).

Configurações do ambiente

Um ponto importante da sua aplicação é definir como as ‘variáveis’ de ambiente são definidas. Há quem prefira adotar a utilização de um arquivo com extensão *.yml que pode ser lido com um ‘parse-yaml’ ou um ENV (de extensão *.env) que também pode ser configurado com um componente externo como o vlucas/phpdotenv, todos os dois são possíves de serem encontrados no Packagist (gerenciador de pacotes do PHP)

Apesar disso, para depender menos de componentes externos, optarei por utilizar de constantes para armazenar as configurações do ambiente.

Como sabemos, as constantes ficam globalmente definidas na sua aplicação. Claro que aplicações modernas utilizam o Composer como gerenciador de dependências.

O meu arquivo `composer.json` está configurado da seguinte forma:

Como é possível perceber (linha 29), eu oriento o Composer a carregar automaticamente uma folha de configuração da minha aplicação, nela armazenarei as minhas configurações globais definidas através de constantes, inclusive, é nela que definirei as configurações de conexão com o banco de dados, como pode ver a seguir:

Classe de Conexão com o Banco utilizando o anti pattern Singleton

De longe é meu objetivo os ‘porquês’ de utilizar ou não este anti-pattern para esta função. Há diversas abordagens e práticas que apoiam ou desrecomendam tal prática. É claro que isso fica a critério de cada um e para onde será destinada.

Observe que os métodos mágicos __clone() e __construct() foram antecedidos da diretiva `final`, que torna ‘não herdáveis’ quem as contém, garantindo assim que, como propõe o singleton: “a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto” — Wikipedia.

A Conexão com o Banco de Dados é feita com a chamada do método ‘getInstance()’ que retorna um objeto PDO ou null, como segue o exemplo.

Dessa maneira é bem fácil trabalhar com a conexão com o Banco de Dados e possibilitar que acessemos quaisquer métodos que o PDO nos disponibiliza a fim de efetuarmos o famoso CRUD (Create, Read, Update e Delete), que é o que vamos tratar na próxima Publicação.

Onde aprendi PHP: Upinside Treinamentos

Referência: PDO Class | PHP.net

--

--

Sérgio Danilo Jr.

Desenvolvedor FullStack PHP | Amante de Tecnologia e Livros. Soteropolitano. Viajando com código e levando tecnologia a outros lugares desse nosso Brasil