PHP::Classe para Conexão
Através dessa classe que toda nossa aplicação conversará com o banco de dados.
Por que uma classe para aberura de conexão?
Possuir uma linha de conexão esplícita no código fonte e passando-a por paramêtro não é algo positivo, por que possuí informações específicas do banco de dados, por exemplo em uma conexão mysql passamos conteúdos como host, usuário, senha sendo informações que não deveriam está no código fonte da aplicação. Outro problema é na troca de banco dados teriamos que pecorrer muitos arquivos para alterar as configurações de conexão.
Como será feito?
Criaremos uma classe para abertura de conexões, assim sempre que quizemos abrir uma nova conexão pedimos a essa classe e os dados de conexão deixaremos fora da classe em um arquivo de configuração ini, então os dados de configuração não estarão em um arquivo de código fonte melhorando caso queremos fazer uma troca de banco.
Começando a implementação
Sistema de diretório
📦ClasseConexao
┣ 📂api
┃ ┗ 📜Connection.php
┣ 📂classes
┃ ┗ 📜Produto.php
┣ 📂config
┃ ┗ 📜config.ini
┣ 📂database
┃ ┗ 📜produto.db
┗ 📜index.php
Arquivo de configuração
host =
name = database/produto.db
user =
pass =
type = sqlite
Banco de Dados
CREATE TABLE produto
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
descricao text,
estoque int,
preco_custo float,
preco_venda float,
codigo_barras text,
data_cadastro date,
origem char(1)
);
Classe Connection
Classe Produto
Para compreender o funcionamento da classe Produto veja esse post:
PHP::Padrão de Projeto Active Record
O que séria Active Record? Active Record é um padrão de projeto que apresenta uma classe que possui tanto métodos de persistência quanto métodos de negócios. Sob o ponto de vista da Oritentação a Objeto essa classe acaba misturando muitas responsabilidades, assim quebrando o princípio da responsabilidade única.
Testando a conexão
Para vereficar a conexão vamos cadastrar um produto no banco de dados.
INSERT INTO produto (descricao, estoque, preco_custo, preco_venda, codigo_barras, data_cadastro, origem) VALUES ('Laranja',5,100,5,2431313123, '2023-08-29','L')
Então essa foi a nossa classe de abertura de conexão para banco de dados.