PHP::Padrão de Projeto Active Record
Active Record é um padrão de projeto que trabalha com a técnica ORM (Object Relational Mapper).
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.
Assim uma maneira de resolver esse “problema“ séria criar uma classe pai que implemente os métodos de persistência de fôrma genêrica, por fim tendo uma separçao entre os métodos de negócios e os métodos de persistência, esse padrão de projeto é conhecido como Layer Supertype.
Implementação do projeto
Sistema de diretório
📦 Active_Record
┣ 📂classes
┃ ┗ 📜Produto.php
┣ 📂config
┃ ┗ 📜config.ini
┣ 📂database
┃ ┗ 📜produto.db
┗ 📜index.phpArquivo de conexão do banco de dados
host = localhost
name = database/produto.db
user =
pass =
type = sqliteBanco de dados
CREATE TABLE produto(
id INTEGER PRIMARY KEY NOT NULL,
descricao TEXT,
estoque FLOAT,
preco_custo FLOAT,
preco_venda FLOAT,
codigo_barras TEXT,
data_cadastro DATE,
origem CHAR(1)
);Classe Produto
Testando
Gravando um dado no banco de dados
Grave duas vezes o mesmo produto.
Resultado obtido caso, a gravação no banco de dados tenha sido realizada.
INSERT INTO produto (descricao, estoque, preco_custo, preco_venda, codigo_barras, data_cadastro, origem) VALUES ('Vinho',20,12,14,1231313123, '2023-08-25','N')Alterando informação de um dados já existente
Resultado obtido caso, alteração no banco de dados tenha sido realizada.
SELECT * FROM produto WHERE id = '2'
UPDATE produto SET descricao = 'Vinho Branco', estoque = '20', preco_custo = '18', preco_venda = '20', codigo_barras = '1231313123', data_cadastro = '2023-08-25', origem = 'N' WHERE id = '2'Listar Dados
Resultado obtido caso, o statement esteja certo.
SELECT * FROM produto
Vinho
Vinho BrancoDeletar Dados
Resultado obtido do delete.
SELECT * FROM produto
DELETE FROM produto WHERE id = '1'
DELETE FROM produto WHERE id = '2'Métodos de Negócios
getMargemLucro()
Resultado da saída.
SELECT * FROM produto WHERE id = '1'
16.666666666667registrarCompra(custo, quantidade)
Resultado da saída.
SELECT * FROM produto WHERE id = '1'
UPDATE produto SET descricao = 'Vinho', estoque = '22', preco_custo = '24', preco_venda = '14', codigo_barras = '1231313123', data_cadastro = '2023-08-25', origem = 'N' WHERE id = '1'









